Files
acc-server-manager/local/controller/controller.go
Fran Jurmanović 56ef5e1484 add state history
2025-05-27 20:18:58 +02:00

80 lines
1.8 KiB
Go

package controller
import (
"acc-server-manager/local/model"
"acc-server-manager/local/service"
"acc-server-manager/local/utl/common"
"fmt"
"log"
"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)
err := c.Invoke(NewApiController)
if err != nil {
log.Panic("unable to initialize api controller")
}
err = c.Invoke(NewConfigController)
if err != nil {
log.Panic("unable to initialize config controller")
}
err = c.Invoke(NewServerController)
if err != nil {
log.Panic("unable to initialize server controller")
}
err = c.Invoke(NewLookupController)
if err != nil {
log.Panic("unable to initialize lookup controller")
}
err = c.Invoke(NewStateHistoryController)
if err != nil {
log.Panic("unable to initialize stateHistory controller")
}
}
// 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
}