Fix product performance grouped JSON build

This commit is contained in:
M_Kececi
2026-07-05 13:54:52 +03:00
parent 27934bccdf
commit c602e1e119
+28 -11
View File
@@ -3486,17 +3486,19 @@ func ListProductPerformanceGrouped(ctx context.Context, pg *sql.DB, req ProductP
req.ExpandThroughLevel = len(levels) - 2 req.ExpandThroughLevel = len(levels) - 2
} }
if out, ok, err := listProductPerformanceGroupedSQL(ctx, pg, req, levels); ok || err != nil {
return out, err
}
sourceRows, err := productPerformanceGroupedSourceRows(ctx, pg, req.Mode, req.Limit) sourceRows, err := productPerformanceGroupedSourceRows(ctx, pg, req.Mode, req.Limit)
if err != nil { if err != nil {
return nil, err return nil, err
} }
sourceRows = filterProductPerformanceGroupedRows(sourceRows, req.Filters) sourceRows = filterProductPerformanceGroupedRows(sourceRows, productPerformanceGroupedEffectiveFilters(req))
out := make([]map[string]any, 0, len(sourceRows)) out := make([]map[string]any, 0, len(sourceRows))
appendProductPerformanceGroupedRows(&out, sourceRows, levels, 0, 0, []string{"tab:" + req.Mode}, req.ExpandedKeys, req.ExpandThroughLevel) appendProductPerformanceGroupedRows(&out, sourceRows, levels, 0, 0, []string{"tab:" + req.Mode}, req.ExpandedKeys, req.ExpandThroughLevel)
if len(out) > 0 || !productPerformanceLiveFallbackEnabled() {
return out, nil
}
if out, ok, err := listProductPerformanceGroupedSQL(ctx, pg, req, levels); ok || err != nil {
return out, err
}
return out, nil return out, nil
} }
@@ -3521,12 +3523,9 @@ func listProductPerformanceGroupedSQL(ctx context.Context, pg *sql.DB, req Produ
} }
func productPerformanceGroupedBaseFilters(req ProductPerformanceGroupedRequest) []productPerformanceSQLGroupFilter { func productPerformanceGroupedBaseFilters(req ProductPerformanceGroupedRequest) []productPerformanceSQLGroupFilter {
filters := make([]productPerformanceSQLGroupFilter, 0, len(req.Filters)+1) effectiveFilters := productPerformanceGroupedEffectiveFilters(req)
mainGroup := strings.TrimSpace(req.MainGroup) filters := make([]productPerformanceSQLGroupFilter, 0, len(effectiveFilters))
if strings.TrimSpace(req.Mode) == "product_detail" && mainGroup != "" { for field, values := range effectiveFilters {
filters = append(filters, productPerformanceSQLGroupFilter{Field: "urun_ana_grubu", Value: mainGroup})
}
for field, values := range req.Filters {
cleanValues := cleanProductPerformanceFilterValues(values) cleanValues := cleanProductPerformanceFilterValues(values)
if len(cleanValues) == 0 { if len(cleanValues) == 0 {
continue continue
@@ -3536,6 +3535,24 @@ func productPerformanceGroupedBaseFilters(req ProductPerformanceGroupedRequest)
return filters return filters
} }
func productPerformanceGroupedEffectiveFilters(req ProductPerformanceGroupedRequest) map[string][]string {
filters := make(map[string][]string, len(req.Filters)+1)
for field, values := range req.Filters {
cleanValues := cleanProductPerformanceFilterValues(values)
if len(cleanValues) == 0 {
continue
}
filters[field] = cleanValues
}
if strings.TrimSpace(req.Mode) == "product_detail" {
mainGroup := cleanProductPerformanceFilterValues([]string{req.MainGroup})
if len(mainGroup) > 0 {
filters["urun_ana_grubu"] = mainGroup
}
}
return filters
}
func appendProductPerformanceGroupedSQLRows(ctx context.Context, pg *sql.DB, out *[]map[string]any, mode string, levels []string, level int, visualLevel int, parentKeys []string, filters []productPerformanceSQLGroupFilter, expandedKeys map[string]bool, expandThroughLevel int, limit int) error { func appendProductPerformanceGroupedSQLRows(ctx context.Context, pg *sql.DB, out *[]map[string]any, mode string, levels []string, level int, visualLevel int, parentKeys []string, filters []productPerformanceSQLGroupFilter, expandedKeys map[string]bool, expandThroughLevel int, limit int) error {
if level >= len(levels) { if level >= len(levels) {
return nil return nil