Skip to content
This repository was archived by the owner on Nov 7, 2025. It is now read-only.

Commit 1e433b7

Browse files
committed
WIP2
1 parent f825f79 commit 1e433b7

File tree

2 files changed

+167
-194
lines changed

2 files changed

+167
-194
lines changed

quesma/queryparser/filters_aggregation.go

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,41 +3,31 @@
33
package queryparser
44

55
import (
6-
"quesma/logger"
6+
"fmt"
77
"quesma/model"
88
"quesma/model/bucket_aggregations"
9+
"sort"
910
)
1011

11-
func (cw *ClickhouseQueryTranslator) parseFilters(queryMap QueryMap) (filtersAggr bucket_aggregations.Filters, success bool) {
12-
filtersAggr = bucket_aggregations.NewFiltersEmpty(cw.Ctx)
13-
14-
filtersRaw, exists := queryMap["filters"]
15-
if !exists {
16-
return
17-
}
18-
19-
filtersMap, ok := filtersRaw.(QueryMap)
12+
func (cw *ClickhouseQueryTranslator) parseFilters(aggregation *pancakeAggregationTreeNode, paramsRaw any) error {
13+
params, ok := paramsRaw.(QueryMap)
2014
if !ok {
21-
logger.WarnWithCtx(cw.Ctx).Msgf("filters is not a map, but %T, value: %v. Using empty.", filtersRaw, filtersRaw)
22-
return
15+
return fmt.Errorf("filters is not a map, but %T, value: %v", paramsRaw, paramsRaw)
2316
}
24-
nested, exists := filtersMap["filters"]
17+
nestedRaw, exists := params["filters"]
2518
if !exists {
26-
logger.WarnWithCtx(cw.Ctx).Msgf("filters is not a map, but %T, value: %v. Skipping filters.", filtersRaw, filtersRaw)
27-
return
19+
return fmt.Errorf("filters is not a map, but %T, value: %v", params, params)
2820
}
29-
nestedMap, ok := nested.(QueryMap)
21+
nested, ok := nestedRaw.(QueryMap)
3022
if !ok {
31-
logger.WarnWithCtx(cw.Ctx).Msgf("filters is not a map, but %T, value: %v. Skipping filters.", nested, nested)
32-
return
23+
return fmt.Errorf("filters is not a map, but %T, value: %v", nestedRaw, nestedRaw)
3324
}
3425

35-
filters := make([]bucket_aggregations.Filter, 0, len(nestedMap))
36-
for name, filterRaw := range nestedMap {
26+
filters := make([]bucket_aggregations.Filter, 0, len(nested))
27+
for name, filterRaw := range nested {
3728
filterMap, ok := filterRaw.(QueryMap)
3829
if !ok {
39-
logger.WarnWithCtx(cw.Ctx).Msgf("filter is not a map, but %T, value: %v. Skipping.", filterRaw, filterRaw)
40-
continue
30+
return fmt.Errorf("filter is not a map, but %T, value: %v", filterRaw, filterRaw)
4131
}
4232
filter := cw.parseQueryMap(filterMap)
4333
if filter.WhereClause == nil {
@@ -46,5 +36,11 @@ func (cw *ClickhouseQueryTranslator) parseFilters(queryMap QueryMap) (filtersAgg
4636
}
4737
filters = append(filters, bucket_aggregations.NewFilter(name, filter))
4838
}
49-
return bucket_aggregations.NewFilters(cw.Ctx, filters), true
39+
40+
sort.Slice(filters, func(i, j int) bool {
41+
return filters[i].Name < filters[j].Name
42+
})
43+
aggregation.queryType = bucket_aggregations.NewFilters(cw.Ctx, filters)
44+
aggregation.isKeyed = true
45+
return nil
5046
}

0 commit comments

Comments
 (0)