@@ -294,18 +294,30 @@ function buildFilter(filters: Filter = {}, propPrefix = ''): string {
294
294
return filterExpr ;
295
295
}
296
296
297
- function buildCollectionClause ( lambdaParameter : string , value : any , op : string , propName : string ) {
298
- let clause = "" ;
299
- if ( value ) {
300
- // normalize {any:[{prop1: 1}, {prop2: 1}] } --> {any:{prop1: 1, prop2: 1}}; same for 'all'
301
- const filter = buildFilterCore (
302
- Array . isArray ( value )
303
- ? value . reduce ( ( acc , item ) => ( { ...acc , ...item } ) , { } )
304
- : value , lambdaParameter ) ;
305
- clause = `${ propName } /${ op } (${ filter ? `${ lambdaParameter } :${ filter } ` : "" } )` ;
306
- }
307
- return clause ;
308
- }
297
+ function buildCollectionClause ( lambdaParameter : string , value : any , op : string , propName : string ) {
298
+ let clause = '' ;
299
+
300
+ if ( typeof value === 'string' || value instanceof String ) {
301
+ clause = getStringCollectionClause ( lambdaParameter , value , op , propName ) ;
302
+
303
+ } else if ( value ) {
304
+ // normalize {any:[{prop1: 1}, {prop2: 1}] } --> {any:{prop1: 1, prop2: 1}}; same for 'all'
305
+ const filter = buildFilterCore (
306
+ Array . isArray ( value )
307
+ ? value . reduce ( ( acc , item ) => ( { ...acc , ...item } ) , { } )
308
+ : value , lambdaParameter ) ;
309
+ clause = `${ propName } /${ op } (${ filter ? `${ lambdaParameter } :${ filter } ` : '' } )` ;
310
+ }
311
+ return clause ;
312
+ }
313
+ }
314
+
315
+ function getStringCollectionClause ( lambdaParameter : string , value : any , collectionOperator : string , propName : string ) {
316
+ let clause = '' ;
317
+ const conditionOperator = collectionOperator == 'all' ? 'ne' : 'eq' ;
318
+ clause = `${ propName } /${ collectionOperator } (${ lambdaParameter } : ${ lambdaParameter } ${ conditionOperator } '${ value } ')`
319
+
320
+ return clause ;
309
321
}
310
322
311
323
function escapeIllegalChars ( string : string ) {
0 commit comments