11import { IAdminForthSingleFilter , IAdminForthAndOrFilter , IAdminForthSort , IOperationalResource , IAdminForthDataSourceConnectorBase , AdminForthResource } from '../types/Back.js' ;
22import { AdminForthFilterOperators } from '../types/Common.js' ;
33
4-
5- function filtersIfFilter ( filter : IAdminForthSingleFilter | IAdminForthAndOrFilter | Array < IAdminForthSingleFilter | IAdminForthAndOrFilter > | undefined ) : IAdminForthAndOrFilter {
6- if ( ! filter ) {
7- // if no filter, return empty "and" filter
8- return { operator : AdminForthFilterOperators . AND , subFilters : [ ] } ;
9- }
10- if ( typeof filter !== 'object' ) {
11- throw new Error ( `Filter should be an array or an object` ) ;
12- }
13- if ( Array . isArray ( filter ) ) {
14- // if filter is an array, combine them using "and" operator
15- return { operator : AdminForthFilterOperators . AND , subFilters : filter } ;
16- }
17- if ( ( filter as IAdminForthAndOrFilter ) . subFilters ) {
18- // if filter is already AndOr filter - return as is
19- return filter as IAdminForthAndOrFilter ;
20- }
21-
22- // by default, assume filter is Single filter, turn it into AndOr filter
23- return { operator : AdminForthFilterOperators . AND , subFilters : [ filter ] } ;
24- }
25-
264function sortsIfSort ( sort : IAdminForthSort | IAdminForthSort [ ] ) : IAdminForthSort [ ] {
275 return ( Array . isArray ( sort ) ? sort : [ sort ] ) as IAdminForthSort [ ] ;
286}
@@ -40,7 +18,7 @@ export default class OperationalResource implements IOperationalResource {
4018 return (
4119 await this . dataConnector . getData ( {
4220 resource : this . resourceConfig ,
43- filters : filtersIfFilter ( filter ) ,
21+ filters : this . dataConnector . validateAndNormalizeInputFilters ( filter ) ,
4422 limit : 1 ,
4523 offset : 0 ,
4624 sort : [ ] ,
@@ -73,7 +51,7 @@ export default class OperationalResource implements IOperationalResource {
7351
7452 const { data } = await this . dataConnector . getData ( {
7553 resource : this . resourceConfig ,
76- filters : filtersIfFilter ( filter ) ,
54+ filters : this . dataConnector . validateAndNormalizeInputFilters ( filter ) ,
7755 limit : appliedLimit ,
7856 offset : appliedOffset ,
7957 sort : sortsIfSort ( sort ) ,
@@ -86,7 +64,7 @@ export default class OperationalResource implements IOperationalResource {
8664 async count ( filter : IAdminForthSingleFilter | IAdminForthAndOrFilter | Array < IAdminForthSingleFilter | IAdminForthAndOrFilter > | undefined ) : Promise < number > {
8765 return await this . dataConnector . getCount ( {
8866 resource : this . resourceConfig ,
89- filters : filtersIfFilter ( filter ) ,
67+ filters : this . dataConnector . validateAndNormalizeInputFilters ( filter ) ,
9068 } ) ;
9169 }
9270
0 commit comments