package endpoints import ( "context" "fmt" cmap "github.com/orcaman/concurrent-map/v2" "relynolli-server/models" "relynolli-server/status" "relynolli-server/storage" "time" "github.com/gin-gonic/gin" // "relynolli-server/models" // "relynolli-server/services" // "strconv" ) type GetCatalogItemsRequest struct { Limit int `form:"limit" ` Page int `form:"page"` } func (h *handlers) GetCatalogItems(c *gin.Context) { queries := cmap.New[[]string]() for key, val := range c.Request.URL.Query() { queries.Set(key, val) } ctx := context.Background() meta := models.Meta{ RequestStarted: time.Now().Unix(), } LPQuery := new(GetCatalogItemsRequest) LPError := c.ShouldBindQuery(LPQuery) if LPError != nil { meta.RequestFinished = time.Now().Unix() c.JSON(400, models.Response{ Status: status.STATUS_BAD_REQUEST, Info: "Limit and page query params should be integer numbers", Meta: &meta, }) return } if LPQuery.Page == 0 { LPQuery.Page = 1 } if LPQuery.Limit == 0 { LPQuery.Limit = 10 } s := storage.NewStorageCatalog() count, items, err := s.GetCatalogItems(ctx, queries, LPQuery.Limit, (LPQuery.Page-1)*LPQuery.Limit) if err != nil { meta.RequestFinished = time.Now().Unix() c.JSON(500, models.Response{ Status: status.STATUS_SERVER_ERROR, Info: fmt.Sprintf("Cannot resolve request. Details: %s", err.Error()), Meta: &meta}) } meta.Limit = LPQuery.Limit meta.Page = LPQuery.Page meta.RequestFinished = time.Now().Unix() meta.Count = count c.JSON(200, models.Response{ Status: status.STATUS_OK, Data: items, Meta: &meta, }) } func (h *handlers) GetCatalogItem(c *gin.Context) { }