Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-03-31 12:46:48 +03:00
parent d7d871fb8a
commit ed80e4f492

View File

@@ -22,18 +22,69 @@ type ProductSizeMatchResponse struct {
Schemas map[string][]string `json:"schemas"`
}
func defaultSizeSchemas() map[string][]string {
func fallbackTakSchema() map[string][]string {
return map[string][]string{
"tak": {"44", "46", "48", "50", "52", "54", "56", "58", "60", "62", "64", "66", "68", "70", "72", "74"},
"ayk": {"39", "40", "41", "42", "43", "44", "45"},
"ayk_garson": {"22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "STD"},
"yas": {"2", "4", "6", "8", "10", "12", "14"},
"pan": {"38", "40", "42", "44", "46", "48", "50", "52", "54", "56", "58", "60", "62", "64", "66", "68"},
"gom": {"XS", "S", "M", "L", "XL", "2XL", "3XL", "4XL", "5XL", "6XL", "7XL"},
"aksbir": {" ", "44", "STD", "110", "115", "120", "125", "130", "135"},
"tak": {"44", "46", "48", "50", "52", "54", "56", "58", "60", "62", "64", "66", "68", "70", "72", "74"},
}
}
func parseSizeValuesCSV(raw string) []string {
parts := strings.Split(raw, ",")
out := make([]string, 0, len(parts))
seen := map[string]struct{}{}
for _, p := range parts {
v := strings.TrimSpace(p)
if v == "" {
v = " "
}
if _, ok := seen[v]; ok {
continue
}
seen[v] = struct{}{}
out = append(out, v)
}
return out
}
func loadSizeSchemas(pgDB *sql.DB) (map[string][]string, error) {
rows, err := pgDB.Query(`
SELECT
COALESCE(group_key, ''),
COALESCE(size_values, '')
FROM mk_size_group
`)
if err != nil {
return nil, err
}
defer rows.Close()
schemas := map[string][]string{}
for rows.Next() {
var groupKey string
var sizeValues string
if err := rows.Scan(&groupKey, &sizeValues); err != nil {
return nil, err
}
key := strings.TrimSpace(groupKey)
if key == "" {
continue
}
schemas[key] = parseSizeValuesCSV(sizeValues)
}
if err := rows.Err(); err != nil {
return nil, err
}
if len(schemas) == 0 {
schemas = fallbackTakSchema()
}
if _, ok := schemas["tak"]; !ok {
schemas["tak"] = fallbackTakSchema()["tak"]
}
return schemas, nil
}
func loadProductSizeMatchData(pgDB *sql.DB) (*ProductSizeMatchResponse, error) {
rows, err := pgDB.Query(`
SELECT
@@ -58,9 +109,13 @@ func loadProductSizeMatchData(pgDB *sql.DB) (*ProductSizeMatchResponse, error) {
}
defer rows.Close()
schemas, err := loadSizeSchemas(pgDB)
if err != nil {
schemas = fallbackTakSchema()
}
resp := &ProductSizeMatchResponse{
Rules: make([]ProductSizeMatchRule, 0),
Schemas: defaultSizeSchemas(),
Schemas: schemas,
}
for rows.Next() {