File tree 1 file changed +29
-0
lines changed
src/packages/pongo/src/postgres/filter
1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -32,6 +32,10 @@ export const handleOperator = (
32
32
operator : string ,
33
33
value : unknown ,
34
34
) : string => {
35
+ if ( path === '_id' ) {
36
+ return handleIdOperator ( operator , value ) ;
37
+ }
38
+
35
39
switch ( operator ) {
36
40
case '$eq' :
37
41
return format (
@@ -90,6 +94,31 @@ export const handleOperator = (
90
94
}
91
95
} ;
92
96
97
+ const handleIdOperator = ( operator : string , value : unknown ) : string => {
98
+ switch ( operator ) {
99
+ case '$eq' :
100
+ return format ( `_id = %L` , value ) ;
101
+ case '$gt' :
102
+ case '$gte' :
103
+ case '$lt' :
104
+ case '$lte' :
105
+ case '$ne' :
106
+ return format ( `_id ${ OperatorMap [ operator ] } %L` , value ) ;
107
+ case '$in' :
108
+ return format (
109
+ `_id IN (%s)` ,
110
+ ( value as unknown [ ] ) . map ( ( v ) => format ( '%L' , v ) ) . join ( ', ' ) ,
111
+ ) ;
112
+ case '$nin' :
113
+ return format (
114
+ `_id NOT IN (%s)` ,
115
+ ( value as unknown [ ] ) . map ( ( v ) => format ( '%L' , v ) ) . join ( ', ' ) ,
116
+ ) ;
117
+ default :
118
+ throw new Error ( `Unsupported operator: ${ operator } ` ) ;
119
+ }
120
+ } ;
121
+
93
122
const buildNestedObject = (
94
123
path : string ,
95
124
value : unknown ,
You can’t perform that action at this time.
0 commit comments