80 lines
1.8 KiB
Go
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
|
|
}
|