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
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user