Files
wallet-go-api/pkg/controllers/api.go
2021-08-29 10:51:29 +02:00

64 lines
1.2 KiB
Go

package controllers
import (
"wallet-api/pkg/middleware"
"wallet-api/pkg/services"
"github.com/gin-gonic/gin"
)
type ApiController struct {
ApiService *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, s *gin.RouterGroup) *ApiController {
ac := new(ApiController)
ac.ApiService = as
s.GET("", ac.getFirst)
s.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.ApiService.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.ApiService.PostMigrate(c, version)
if er.Message != "" {
c.JSON(er.StatusCode, er)
} else {
c.JSON(200, mr)
}
}