Fix product performance grouped JSON build
This commit is contained in:
@@ -3486,17 +3486,19 @@ func ListProductPerformanceGrouped(ctx context.Context, pg *sql.DB, req ProductP
|
||||
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)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sourceRows = filterProductPerformanceGroupedRows(sourceRows, req.Filters)
|
||||
sourceRows = filterProductPerformanceGroupedRows(sourceRows, productPerformanceGroupedEffectiveFilters(req))
|
||||
out := make([]map[string]any, 0, len(sourceRows))
|
||||
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
|
||||
}
|
||||
|
||||
@@ -3521,12 +3523,9 @@ func listProductPerformanceGroupedSQL(ctx context.Context, pg *sql.DB, req Produ
|
||||
}
|
||||
|
||||
func productPerformanceGroupedBaseFilters(req ProductPerformanceGroupedRequest) []productPerformanceSQLGroupFilter {
|
||||
filters := make([]productPerformanceSQLGroupFilter, 0, len(req.Filters)+1)
|
||||
mainGroup := strings.TrimSpace(req.MainGroup)
|
||||
if strings.TrimSpace(req.Mode) == "product_detail" && mainGroup != "" {
|
||||
filters = append(filters, productPerformanceSQLGroupFilter{Field: "urun_ana_grubu", Value: mainGroup})
|
||||
}
|
||||
for field, values := range req.Filters {
|
||||
effectiveFilters := productPerformanceGroupedEffectiveFilters(req)
|
||||
filters := make([]productPerformanceSQLGroupFilter, 0, len(effectiveFilters))
|
||||
for field, values := range effectiveFilters {
|
||||
cleanValues := cleanProductPerformanceFilterValues(values)
|
||||
if len(cleanValues) == 0 {
|
||||
continue
|
||||
@@ -3536,6 +3535,24 @@ func productPerformanceGroupedBaseFilters(req ProductPerformanceGroupedRequest)
|
||||
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 {
|
||||
if level >= len(levels) {
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user