This commit is contained in:
Fran Jurmanović
2024-07-09 23:42:26 +02:00
commit 1bb73c866a
15 changed files with 425 additions and 0 deletions

44
local/controller/api.go Normal file
View File

@@ -0,0 +1,44 @@
package controller
import (
"acc-server-manager/local/service"
"acc-server-manager/local/utl/common"
"github.com/gofiber/fiber/v2"
)
type ApiController struct {
service *service.ApiService
}
/*
NewApiController
Initializes ApiController.
Args:
*services.ApiService: API service
*Fiber.RouterGroup: Fiber Router Group
Returns:
*ApiController: Controller for "api" interactions
*/
func NewApiController(as *service.ApiService, routeGroups *common.RouteGroups) *ApiController {
ac := &ApiController{
service: as,
}
routeGroups.Api.Get("", ac.getFirst)
return ac
}
/*
getFirst
Args:
*fiber.Ctx: Fiber Application Context
*/
// ROUTE (GET /api).
func (ac *ApiController) getFirst(c *fiber.Ctx) error {
apiModel := ac.service.GetFirst(c)
return c.SendString(apiModel)
}

View File

@@ -0,0 +1,62 @@
package controller
import (
"acc-server-manager/local/model"
"acc-server-manager/local/service"
"acc-server-manager/local/utl/common"
"fmt"
"strconv"
"strings"
"github.com/gofiber/fiber/v2"
"go.uber.org/dig"
)
/*
InitializeControllers
Initializes Dependency Injection modules and registers controllers
Args:
*dig.Container: Dig Container
*/
func InitializeControllers(c *dig.Container) {
service.InitializeServices(c)
c.Invoke(NewApiController)
}
/*
FilteredResponse
Gets query parameters and populates FilteredResponse model.
Args:
*gin.Context: Gin Application Context
Returns:
*model.FilteredResponse: Filtered response
*/
func FilteredResponse(c *fiber.Ctx) *model.FilteredResponse {
filtered := new(model.FilteredResponse)
page := c.Params("page")
rpp := c.Params("rpp")
sortBy := c.Params("sortBy")
dividers := [5]string{"|", " ", ".", "/", ","}
for _, div := range dividers {
sortArr := strings.Split(sortBy, div)
if len(sortArr) >= 2 {
sortBy = fmt.Sprintf("%s %s", common.ToSnakeCase(sortArr[0]), strings.ToUpper(sortArr[1]))
}
}
filtered.Embed = c.Params("embed")
filtered.Page, _ = strconv.Atoi(page)
filtered.Rpp, _ = strconv.Atoi(rpp)
filtered.SortBy = sortBy
return filtered
}