@@ -185,9 +185,14 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth
185
185
return `${ field } ${ operator } ${ placeholder } ` ;
186
186
}
187
187
188
+ // filter is a single insecure raw sql
189
+ if ( ( filter as IAdminForthSingleFilter ) . insecureRawSQL ) {
190
+ return ( filter as IAdminForthSingleFilter ) . insecureRawSQL ;
191
+ }
192
+
188
193
// filter is a AndOr filter
189
194
return ( filter as IAdminForthAndOrFilter ) . subFilters . map ( ( f ) => {
190
- if ( ( f as IAdminForthSingleFilter ) . field ) {
195
+ if ( ( f as IAdminForthSingleFilter ) . field || ( f as IAdminForthSingleFilter ) . insecureRawSQL ) {
191
196
// subFilter is a Single filter
192
197
return this . getFilterString ( resource , f ) ;
193
198
}
@@ -209,6 +214,11 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth
209
214
}
210
215
}
211
216
217
+ // filter is a Single insecure raw sql
218
+ if ( ( filter as IAdminForthSingleFilter ) . insecureRawSQL ) {
219
+ return [ ] ;
220
+ }
221
+
212
222
// filter is a AndOrFilter
213
223
return ( filter as IAdminForthAndOrFilter ) . subFilters . reduce ( ( params : any [ ] , f : IAdminForthSingleFilter | IAdminForthAndOrFilter ) => {
214
224
return params . concat ( this . getFilterParams ( f ) ) ;
@@ -310,6 +320,13 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth
310
320
filters : IAdminForthAndOrFilter ;
311
321
} ) : Promise < number > {
312
322
const tableName = resource . table ;
323
+ // validate and normalize in case this method is called from dataAPI
324
+ if ( filters ) {
325
+ const filterValidation = this . validateAndNormalizeFilters ( filters , resource ) ;
326
+ if ( ! filterValidation . ok ) {
327
+ throw new Error ( filterValidation . error ) ;
328
+ }
329
+ }
313
330
const { where, params } = this . whereClause ( resource , filters ) ;
314
331
315
332
const countQ = await this . client . query ( {
0 commit comments