File tree 2 files changed +12
-13
lines changed
2 files changed +12
-13
lines changed Original file line number Diff line number Diff line change @@ -35,6 +35,7 @@ import { getQueryResponseProcessor } from 'datasource/processResponse';
35
35
36
36
import { SECOND } from 'utils/time' ;
37
37
import { GConstructor } from 'utils/mixins' ;
38
+ import { LuceneQuery } from '@/utils/lucene' ;
38
39
39
40
export type BaseQuickwitDataSourceConstructor = GConstructor < BaseQuickwitDataSource >
40
41
@@ -113,24 +114,18 @@ export class BaseQuickwitDataSource
113
114
return query ;
114
115
}
115
116
116
- let expression = query . query ?? '' ;
117
+ let lquery = LuceneQuery . parse ( query . query ?? '' )
117
118
switch ( action . type ) {
118
119
case 'ADD_FILTER' : {
119
- if ( expression . length > 0 ) {
120
- expression += ' AND ' ;
121
- }
122
- expression += `${ action . options . key } :"${ action . options . value } "` ;
120
+ lquery = lquery . addFilter ( action . options . key , action . options . value )
123
121
break ;
124
122
}
125
123
case 'ADD_FILTER_OUT' : {
126
- if ( expression . length > 0 ) {
127
- expression += ' AND ' ;
128
- }
129
- expression += `-${ action . options . key } :"${ action . options . value } "` ;
124
+ lquery = lquery . addFilter ( action . options . key , action . options . value , '-' )
130
125
break ;
131
126
}
132
127
}
133
- return { ...query , query : expression } ;
128
+ return { ...query , query : lquery . toString ( ) } ;
134
129
}
135
130
136
131
getDataQueryRequest ( queryDef : TermsQuery , range : TimeRange ) {
Original file line number Diff line number Diff line change @@ -142,11 +142,15 @@ function removeNodeFromTree(ast: AST, node: NodeTerm): AST {
142
142
/**
143
143
* Merge a query with a filter.
144
144
*/
145
- export function concatenate ( query : string , filter : string , condition = 'AND' ) : string {
145
+ export function concatenate ( query : string , filter : string , operator ?: 'AND' | 'OR ') : string {
146
146
if ( ! filter ) {
147
147
return query ;
148
148
}
149
- return query . trim ( ) === '' ? filter : `${ query } ${ condition } ${ filter } ` ;
149
+ if ( query . trim ( ) === '' ) {
150
+ return filter ;
151
+ }
152
+
153
+ return operator ? `${ query } ${ operator } ${ filter } ` : `${ query } ${ filter } `
150
154
}
151
155
152
156
export class LuceneQuery {
@@ -192,7 +196,7 @@ export class LuceneQuery {
192
196
193
197
key = escapeFilter ( key ) ;
194
198
value = escapeFilterValue ( value ) ;
195
- const filter = `${ modifier } ${ key } :"${ value } "` ;
199
+ let filter = `${ modifier } ${ key } :"${ value } "` ;
196
200
197
201
return LuceneQuery . parse ( concatenate ( this . toString ( ) , filter ) ) ;
198
202
}
You can’t perform that action at this time.
0 commit comments