File tree Expand file tree Collapse file tree 3 files changed +31
-0
lines changed
adminforth/dataConnectors Expand file tree Collapse file tree 3 files changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -180,6 +180,19 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth
180
180
let operator = this . OperatorsMap [ filter . operator ] ;
181
181
if ( filter . operator == AdminForthFilterOperators . IN || filter . operator == AdminForthFilterOperators . NIN ) {
182
182
placeholder = `(${ filter . value . map ( ( _ , j ) => `{p$?:${ column . _underlineType } }` ) . join ( ', ' ) } )` ;
183
+ } else if ( filter . operator == AdminForthFilterOperators . EQ && filter . value === null ) {
184
+ operator = 'IS' ;
185
+ placeholder = 'NULL' ;
186
+ } else if ( filter . operator == AdminForthFilterOperators . NE ) {
187
+ if ( filter . value === null ) {
188
+ operator = 'IS NOT' ;
189
+ placeholder = 'NULL' ;
190
+ } else {
191
+ // for not equal, we need to add a null check
192
+ // because nullish field will not match != value
193
+ placeholder = `${ placeholder } OR ${ field } IS NULL)` ;
194
+ field = `(${ field } ` ;
195
+ }
183
196
}
184
197
185
198
return `${ field } ${ operator } ${ placeholder } ` ;
@@ -209,6 +222,12 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth
209
222
return [ { 'f' : `%${ filter . value } %` } ] ;
210
223
} else if ( filter . operator == AdminForthFilterOperators . IN || filter . operator == AdminForthFilterOperators . NIN ) {
211
224
return [ { 'p' : filter . value } ] ;
225
+ } else if ( filter . operator == AdminForthFilterOperators . EQ && filter . value === null ) {
226
+ // there is no param for IS NULL filter
227
+ return [ ] ;
228
+ } else if ( filter . operator == AdminForthFilterOperators . NE && filter . value === null ) {
229
+ // there is no param for IS NOT NULL filter
230
+ return [ ] ;
212
231
} else {
213
232
return [ { 'f' : ( filter as IAdminForthSingleFilter ) . value } ] ;
214
233
}
Original file line number Diff line number Diff line change @@ -192,6 +192,9 @@ class MysqlConnector extends AdminForthBaseConnector implements IAdminForthDataS
192
192
placeholder = `${ placeholder } OR ${ field } IS NULL)` ;
193
193
field = `(${ field } ` ;
194
194
}
195
+ } else if ( filter . operator == AdminForthFilterOperators . EQ && filter . value === null ) {
196
+ operator = 'IS' ;
197
+ placeholder = 'NULL' ;
195
198
}
196
199
return `${ field } ${ operator } ${ placeholder } ` ;
197
200
}
@@ -219,6 +222,10 @@ class MysqlConnector extends AdminForthBaseConnector implements IAdminForthDataS
219
222
return [ `%${ filter . value } %` ] ;
220
223
} else if ( filter . operator == AdminForthFilterOperators . IN || filter . operator == AdminForthFilterOperators . NIN ) {
221
224
return filter . value ;
225
+ } else if ( filter . operator == AdminForthFilterOperators . EQ && ( filter as IAdminForthSingleFilter ) . value === null ) {
226
+ return [ ] ;
227
+ } else if ( filter . operator == AdminForthFilterOperators . NE && ( filter as IAdminForthSingleFilter ) . value === null ) {
228
+ return [ ] ;
222
229
} else {
223
230
return [ ( filter as IAdminForthSingleFilter ) . value ] ;
224
231
}
Original file line number Diff line number Diff line change @@ -217,6 +217,9 @@ class PostgresConnector extends AdminForthBaseConnector implements IAdminForthDa
217
217
( filter . operator == AdminForthFilterOperators . ILIKE || filter . operator == AdminForthFilterOperators . LIKE )
218
218
) {
219
219
field = `cast("${ field } " as text)`
220
+ } else if ( filter . operator == AdminForthFilterOperators . EQ && filter . value === null ) {
221
+ operator = 'IS' ;
222
+ placeholder = 'NULL' ;
220
223
} else {
221
224
field = `"${ field } "`
222
225
}
@@ -247,6 +250,8 @@ class PostgresConnector extends AdminForthBaseConnector implements IAdminForthDa
247
250
return [ `%${ filter . value } %` ] ;
248
251
} else if ( filter . operator == AdminForthFilterOperators . IN || filter . operator == AdminForthFilterOperators . NIN ) {
249
252
return filter . value ;
253
+ } else if ( filter . operator == AdminForthFilterOperators . EQ && filter . value === null ) {
254
+ return [ ] ;
250
255
} else {
251
256
return [ ( filter as IAdminForthSingleFilter ) . value ] ;
252
257
}
You can’t perform that action at this time.
0 commit comments