filters
This commit is contained in:
3
.env
3
.env
@@ -56,4 +56,5 @@ PDF_SERVER_URL=http://localhost:8000
|
||||
FILE_MAAL_PL_USER=git_operator
|
||||
FILE_MAAL_PL_PASSWORD=1FnwqcEgIUjQHjt1
|
||||
|
||||
IMAGE_PREFIX=https://www.naluconcept.com # remove prefix to serv them from same host as presta
|
||||
IMAGE_PREFIX=https://www.naluconcept.com # remove prefix to serv them from same host as presta
|
||||
CORS_ORGIN=https://www.naluconcept.com
|
||||
@@ -11,8 +11,8 @@
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"url": "http://localhost:3000",
|
||||
"description": "Development server"
|
||||
"url": "/",
|
||||
"description": "Development server on same host"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
|
||||
@@ -23,6 +23,7 @@ type Config struct {
|
||||
Pdf PdfPrinter
|
||||
GoogleTranslate GoogleTranslateConfig
|
||||
Image ImageConfig
|
||||
Cors CorsConfig
|
||||
}
|
||||
|
||||
type I18n struct {
|
||||
@@ -33,6 +34,10 @@ type ServerConfig struct {
|
||||
Host string `env:"SERVER_HOST,0.0.0.0"`
|
||||
}
|
||||
|
||||
type CorsConfig struct {
|
||||
Origins []string `env:"CORS_ORGIN"`
|
||||
}
|
||||
|
||||
type ImageConfig struct {
|
||||
ImagePrefix string `env:"IMAGE_PREFIX"`
|
||||
}
|
||||
@@ -176,6 +181,11 @@ func load() *Config {
|
||||
if err != nil {
|
||||
slog.Error("not possible to load env variables for google translate : ", err.Error(), "")
|
||||
}
|
||||
|
||||
err = loadEnv(&cfg.Cors)
|
||||
if err != nil {
|
||||
slog.Error("not possible to load env variables for google translate : ", err.Error(), "")
|
||||
}
|
||||
return cfg
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,23 @@
|
||||
package middleware
|
||||
|
||||
import "github.com/gofiber/fiber/v3"
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"git.ma-al.com/goc_daniel/b2b/app/config"
|
||||
"github.com/gofiber/fiber/v3"
|
||||
)
|
||||
|
||||
// CORSMiddleware creates CORS middleware
|
||||
func CORSMiddleware() fiber.Handler {
|
||||
return func(c fiber.Ctx) error {
|
||||
c.Set("Access-Control-Allow-Origin", "*")
|
||||
|
||||
if strings.Contains(c.Get("Host"), "localhost") {
|
||||
c.Set("Access-Control-Allow-Origin", c.Get("Host"))
|
||||
} else {
|
||||
origins := strings.Join(config.Get().Cors.Origins, ",")
|
||||
c.Set("Access-Control-Allow-Origin", origins)
|
||||
}
|
||||
|
||||
c.Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
|
||||
c.Set("Access-Control-Allow-Headers", "Content-Type, Authorization")
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package restricted
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"git.ma-al.com/goc_daniel/b2b/app/config"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/service/listProductsService"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/utils/i18n"
|
||||
@@ -36,6 +38,64 @@ func ListProductsHandlerRoutes(r fiber.Router) fiber.Router {
|
||||
return r
|
||||
}
|
||||
|
||||
// var columnMapping map[string]string = map[string]string{
|
||||
// "product_id": "id",
|
||||
// "price": "price_taxed",
|
||||
// "name": "name",
|
||||
// "category_id": "category_id",
|
||||
// "feature_id": "feature_id",
|
||||
// "feature": "feature_name",
|
||||
// "value_id": "value_id",
|
||||
// "value": "value_name",
|
||||
// "status": "active_sale",
|
||||
// "stock": "in_stock",
|
||||
// }
|
||||
|
||||
// type FeatVal = map[uint][]uint
|
||||
|
||||
// func featureValueFilters(feats FeatVal) filters.Filter {
|
||||
// filt := func(db *gorm.DB) *gorm.DB {
|
||||
// return db.Where("value_id IN ?", lo.Flatten(lo.Values(feats))).Group("id").Having("COUNT(id) = ?", len(lo.Keys(feats)))
|
||||
// }
|
||||
// return filters.NewFilter(filters.FEAT_VAL_PRODUCT_FILTER, filt)
|
||||
// }
|
||||
|
||||
// func ParseProductFilters(c fiber.Ctx) (find.Paging, *filters.FiltersList, error) {
|
||||
// var p find.Paging
|
||||
// fl := filters.NewFiltersList()
|
||||
// productFilters := new(model.ProductFilters)
|
||||
// fmt.Printf("fl: %v\n", fl)
|
||||
// err := c.Bind().Query(productFilters)
|
||||
// if err != nil {
|
||||
// return p, &fl, err
|
||||
// }
|
||||
|
||||
// if productFilters.Name != "" {
|
||||
// fl.Append(filters.Where("name LIKE ?", fmt.Sprintf("%%%s%%", productFilters.Name)))
|
||||
// }
|
||||
|
||||
// if productFilters.Sort != "" {
|
||||
// ord, err := query_params.ParseOrdering[model.Product](c, columnMapping)
|
||||
// if err != nil {
|
||||
// return p, &fl, err
|
||||
// }
|
||||
// for _, o := range ord {
|
||||
// fl.Append(filters.Order(o.Column, o.IsDesc))
|
||||
// }
|
||||
// }
|
||||
|
||||
// if len(productFilters.Features) > 0 {
|
||||
// fl.Append(featureValueFilters(productFilters.Features))
|
||||
// }
|
||||
|
||||
// fl.Append(query_params.ParseWhereScopes[model.Product](c, []string{"name"}, columnMapping)...)
|
||||
|
||||
// pageNum, pageElems := query_params.ParsePagination(c)
|
||||
// p = find.Paging{Page: pageNum, Elements: pageElems}
|
||||
|
||||
// return p, &fl, nil
|
||||
// }
|
||||
|
||||
func (h *ListProductsHandler) GetListing(c fiber.Ctx) error {
|
||||
paging, filters, err := ParseProductFilters(c)
|
||||
if err != nil {
|
||||
@@ -64,6 +124,8 @@ func ParseProductFilters(c fiber.Ctx) (find.Paging, *filters.FiltersList, error)
|
||||
var p find.Paging
|
||||
fl := filters.NewFiltersList()
|
||||
|
||||
fmt.Printf("fl: %v\n", fl.All())
|
||||
|
||||
pageNum, pageElems := query_params.ParsePagination(c)
|
||||
p = find.Paging{Page: pageNum, Elements: pageElems}
|
||||
|
||||
|
||||
@@ -47,6 +47,11 @@ var swaggerHTML = `
|
||||
url: "/openapi.json",
|
||||
dom_id: '#swagger-ui',
|
||||
deepLinking: true,
|
||||
withCredentials: true,
|
||||
"servers": [
|
||||
{ "url": "http://localhost:3000" },
|
||||
{ "url": "http://localhost:5173" }
|
||||
],
|
||||
presets: [
|
||||
SwaggerUIBundle.presets.apis,
|
||||
SwaggerUIStandalonePreset
|
||||
|
||||
Reference in New Issue
Block a user