package restricted import ( "strconv" "git.ma-al.com/goc_daniel/b2b/app/service/meiliService" "git.ma-al.com/goc_daniel/b2b/app/utils/i18n" "git.ma-al.com/goc_daniel/b2b/app/utils/nullable" "git.ma-al.com/goc_daniel/b2b/app/utils/response" "git.ma-al.com/goc_daniel/b2b/app/utils/responseErrors" "github.com/gofiber/fiber/v3" ) type MeiliSearchHandler struct { meiliService *meiliService.MeiliService } func NewMeiliSearchHandler() *MeiliSearchHandler { meiliService := meiliService.New() return &MeiliSearchHandler{ meiliService: meiliService, } } func MeiliSearchHandlerRoutes(r fiber.Router) fiber.Router { handler := NewMeiliSearchHandler() // for testing purposes only. Must be removed before proper release. r.Get("/create-index", handler.CreateIndex) r.Get("/test", handler.Test) r.Get("/settings", handler.GetSettings) // for all users r.Get("/search", handler.Search) return r } func (h *MeiliSearchHandler) CreateIndex(c fiber.Ctx) error { id_lang, ok := c.Locals("langID").(uint) if !ok { return c.Status(responseErrors.GetErrorStatus(responseErrors.ErrBadAttribute)). JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, responseErrors.ErrBadAttribute))) } err := h.meiliService.CreateIndex(id_lang) if err != nil { return c.Status(responseErrors.GetErrorStatus(err)). JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, err))) } nothing := "" return c.JSON(response.Make(¬hing, 0, i18n.T_(c, response.Message_OK))) } func (h *MeiliSearchHandler) Test(c fiber.Ctx) error { id_lang, ok := c.Locals("langID").(uint) if !ok { return c.Status(responseErrors.GetErrorStatus(responseErrors.ErrBadAttribute)). JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, responseErrors.ErrBadAttribute))) } test, err := h.meiliService.Test(id_lang) if err != nil { return c.Status(responseErrors.GetErrorStatus(err)). JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, err))) } return c.JSON(response.Make(&test, 0, i18n.T_(c, response.Message_OK))) } func (h *MeiliSearchHandler) Search(c fiber.Ctx) error { id_lang, ok := c.Locals("langID").(uint) if !ok { return c.Status(responseErrors.GetErrorStatus(responseErrors.ErrBadAttribute)). JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, responseErrors.ErrBadAttribute))) } query := c.Query("query") id_category_attribute := c.Query("id_category", "0") id_category, err := strconv.Atoi(id_category_attribute) if err != nil { return c.Status(responseErrors.GetErrorStatus(responseErrors.ErrBadAttribute)). JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, responseErrors.ErrBadAttribute))) } meili_response, err := h.meiliService.Search(id_lang, query, uint(id_category)) if err != nil { return c.Status(responseErrors.GetErrorStatus(err)). JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, err))) } return c.JSON(response.Make(&meili_response, 0, i18n.T_(c, response.Message_OK))) } func (h *MeiliSearchHandler) GetSettings(c fiber.Ctx) error { id_lang, ok := c.Locals("langID").(uint) if !ok { return c.Status(responseErrors.GetErrorStatus(responseErrors.ErrBadAttribute)). JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, responseErrors.ErrBadAttribute))) } settings, err := h.meiliService.GetIndexSettings(id_lang) if err != nil { return c.Status(responseErrors.GetErrorStatus(err)). JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, err))) } return c.JSON(response.Make(&settings, 0, i18n.T_(c, response.Message_OK))) }