diff --git a/handlers/cart/endpoints/cart.go b/handlers/cart/endpoints/cart.go index 28d5de4..6a52f0a 100644 --- a/handlers/cart/endpoints/cart.go +++ b/handlers/cart/endpoints/cart.go @@ -1,10 +1,11 @@ package endpoints import ( - "github.com/gin-gonic/gin" "relynolli-server/models" "relynolli-server/services" "strconv" + + "github.com/gin-gonic/gin" ) func (h *handlers) GetCartItems(c *gin.Context) { diff --git a/handlers/cart/endpoints/item.go b/handlers/cart/endpoints/item.go index 6f610cc..65b84ae 100644 --- a/handlers/cart/endpoints/item.go +++ b/handlers/cart/endpoints/item.go @@ -2,10 +2,11 @@ package endpoints import ( "fmt" - "github.com/gin-gonic/gin" "net/http" "relynolli-server/models" "relynolli-server/services" + + "github.com/gin-gonic/gin" ) type createCartItemRequest struct { diff --git a/handlers/order/endpoints/ep.go b/handlers/order/endpoints/ep.go index f97c39b..8d7440c 100644 --- a/handlers/order/endpoints/ep.go +++ b/handlers/order/endpoints/ep.go @@ -2,11 +2,12 @@ package endpoints import ( "fmt" - "github.com/gin-gonic/gin" - "github.com/go-playground/validator/v10" "net/http" "relynolli-server/models" "relynolli-server/services" + + "github.com/gin-gonic/gin" + "github.com/go-playground/validator/v10" ) type handlers struct{} diff --git a/handlers/validate/endpoints/validate.go b/handlers/validate/endpoints/validate.go index a85f124..8b45f10 100644 --- a/handlers/validate/endpoints/validate.go +++ b/handlers/validate/endpoints/validate.go @@ -2,10 +2,11 @@ package endpoints import ( "fmt" - "github.com/gin-gonic/gin" "net/http" "relynolli-server/models" "relynolli-server/services" + + "github.com/gin-gonic/gin" ) type handlers struct{} diff --git a/storage/catalog.go b/storage/catalog.go index 434a9a7..2fca1a1 100644 --- a/storage/catalog.go +++ b/storage/catalog.go @@ -3,12 +3,13 @@ package storage import ( "context" "fmt" - cmap "github.com/orcaman/concurrent-map/v2" - "github.com/uptrace/bun" "relynolli-server/internal" "relynolli-server/models/catalog" filters2 "relynolli-server/models/filters" "slices" + + cmap "github.com/orcaman/concurrent-map/v2" + "github.com/uptrace/bun" ) type StorageCatalog interface { @@ -43,16 +44,17 @@ func buildFilterGroup(ctx context.Context, q *bun.SelectQuery, filters *cmap.Con availableFilters := new([]filters2.DBFilter) //Get filters - db.NewSelect().Model(availableFilters).Where("code in (?)", bun.In(filters.Keys())).Scan(ctx) + db.NewSelect().Model(availableFilters).Scan(ctx) for _, filter := range filters.Keys() { + filter = filter[0 : len(filter)-2] if !slices.ContainsFunc(*availableFilters, func(elem filters2.DBFilter) bool { return elem.Code == filter }) { continue } q = q.WhereGroup(" AND ", func(query *bun.SelectQuery) *bun.SelectQuery { - values, _ := filters.Get(filter) + values, _ := filters.Get(filter + "[]") for _, val := range values { query = q.WhereOr(fmt.Sprintf("properties->>'$.%s' = ?", filter), val) } @@ -67,7 +69,7 @@ func (s *storage) GetCatalogItems(ctx context.Context, filters cmap.ConcurrentMa db := internal.InitDatabase().GetInstance() model := new([]catalog.DBCatalog) filterQuery := db.NewSelect().Model(model).Where("is_active = 1").Where("available_quantity > 0") - count, _ := buildFilterGroup(ctx, filterQuery, &filters).Limit(limit).Offset(offset).ScanAndCount(ctx) + count, _ := buildFilterGroup(ctx, filterQuery, &filters).Limit(limit).Offset(offset).Order("code").ScanAndCount(ctx) return count, model, nil }