@@ -185,9 +185,14 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth
185185 return `${ field } ${ operator } ${ placeholder } ` ;
186186 }
187187
188+ // filter is a single insecure raw sql
189+ if ( ( filter as IAdminForthSingleFilter ) . insecureRawSQL ) {
190+ return ( filter as IAdminForthSingleFilter ) . insecureRawSQL ;
191+ }
192+
188193 // filter is a AndOr filter
189194 return ( filter as IAdminForthAndOrFilter ) . subFilters . map ( ( f ) => {
190- if ( ( f as IAdminForthSingleFilter ) . field ) {
195+ if ( ( f as IAdminForthSingleFilter ) . field || ( f as IAdminForthSingleFilter ) . insecureRawSQL ) {
191196 // subFilter is a Single filter
192197 return this . getFilterString ( resource , f ) ;
193198 }
@@ -209,6 +214,11 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth
209214 }
210215 }
211216
217+ // filter is a Single insecure raw sql
218+ if ( ( filter as IAdminForthSingleFilter ) . insecureRawSQL ) {
219+ return [ ] ;
220+ }
221+
212222 // filter is a AndOrFilter
213223 return ( filter as IAdminForthAndOrFilter ) . subFilters . reduce ( ( params : any [ ] , f : IAdminForthSingleFilter | IAdminForthAndOrFilter ) => {
214224 return params . concat ( this . getFilterParams ( f ) ) ;
@@ -310,6 +320,13 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth
310320 filters : IAdminForthAndOrFilter ;
311321 } ) : Promise < number > {
312322 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+ }
313330 const { where, params } = this . whereClause ( resource , filters ) ;
314331
315332 const countQ = await this . client . query ( {
0 commit comments