@@ -10,16 +10,24 @@ import (
1010)
1111
1212type Filters struct {
13- Ctx context.Context
13+ ctx context.Context
1414 Filters []Filter
1515}
1616
1717func NewFiltersEmpty (ctx context.Context ) Filters {
18- return Filters {Ctx : ctx }
18+ return Filters {ctx : ctx }
1919}
2020
2121func NewFilters (ctx context.Context , filters []Filter ) Filters {
22- return Filters {Ctx : ctx , Filters : filters }
22+ return Filters {ctx : ctx , Filters : filters }
23+ }
24+
25+ func (query Filters ) NewFiltersSingleFilter (idx int ) Filters {
26+ if idx < 0 || idx >= len (query .Filters ) {
27+ logger .ErrorWithCtx (query .ctx ).Msgf ("invalid index %d for filters aggregation" , idx )
28+ return NewFiltersEmpty (query .ctx )
29+ }
30+ return NewFilters (query .ctx , []Filter {query .Filters [idx ]})
2331}
2432
2533type Filter struct {
@@ -41,7 +49,7 @@ func (query Filters) TranslateSqlResponseToJson(rows []model.QueryResultRow) mod
4149 if len (rows [0 ].Cols ) > 0 {
4250 value = rows [0 ].Cols [len (rows [0 ].Cols )- 1 ].Value
4351 } else {
44- logger .ErrorWithCtx (query .Ctx ).Msgf ("unexpected number of columns in filters aggregation response, len(rows[0].Cols): %d" , len (rows [0 ].Cols ))
52+ logger .ErrorWithCtx (query .ctx ).Msgf ("unexpected number of columns in filters aggregation response, len(rows[0].Cols): %d" , len (rows [0 ].Cols ))
4553 }
4654 }
4755 return model.JsonMap {
@@ -58,7 +66,6 @@ func (query Filters) DoesNotHaveGroupBy() bool {
5866}
5967
6068func (query Filters ) CombinatorGroups () (result []CombinatorGroup ) {
61- fmt .Println ("combining groups" , query .Filters )
6269 for filterIdx , filter := range query .Filters {
6370 prefix := fmt .Sprintf ("filter_%d__" , filterIdx )
6471 if len (query .Filters ) == 1 {
@@ -80,8 +87,8 @@ func (query Filters) CombinatorTranslateSqlResponseToJson(subGroup CombinatorGro
8087
8188func (query Filters ) CombinatorSplit () []model.QueryType {
8289 result := make ([]model.QueryType , 0 , len (query .Filters ))
83- for _ , filter := range query .Filters {
84- result = append (result , NewFilters ( query .Ctx , [] Filter { filter } ))
90+ for i := range query .Filters {
91+ result = append (result , query .NewFiltersSingleFilter ( i ))
8592 }
8693 return result
8794}
0 commit comments