Files
wallet-go-api/pkg/controllers/api.go
Fran Jurmanović 13ce0735d0 add DI
2022-09-26 21:17:30 +02:00

67 lines
1.3 KiB
Go

package controllers
import (
"wallet-api/pkg/middleware"
"wallet-api/pkg/services"
"wallet-api/pkg/utl/common"
"github.com/gin-gonic/gin"
)
type ApiController struct {
service *services.ApiService
}
/*
NewApiController
Initializes ApiController.
Args:
*services.ApiService: API service
*gin.RouterGroup: Gin Router Group
Returns:
*ApiController: Controller for "api" interactions
*/
func NewApiController(as *services.ApiService, routeGroups *common.RouteGroups) *ApiController {
ac := &ApiController{
service: as,
}
routeGroups.Api.GET("", ac.getFirst)
routeGroups.Api.POST("migrate", middleware.SecretCode, ac.postMigrate)
return ac
}
/*
getFirst
Args:
*gin.Context: Gin Application Context
*/
// ROUTE (GET /api).
func (ac *ApiController) getFirst(c *gin.Context) {
apiModel := ac.service.GetFirst(c)
c.JSON(200, apiModel)
}
/*
postMigrate
Requires "SECRET_CODE", "VERSION" (optional) from body.
Args:
*gin.Context: Gin Application Context
*/
// ROUTE (POST /api/migrate).
func (ac *ApiController) postMigrate(c *gin.Context) {
migrateModel := c.MustGet("migrate")
version := migrateModel.(middleware.SecretCodeModel).Version
mr, er := ac.service.PostMigrate(c, version)
if er.Message != "" {
c.JSON(er.StatusCode, er)
} else {
c.JSON(200, mr)
}
}