1
1
import { IAdminForthSingleFilter , IAdminForthAndOrFilter , IAdminForthSort , IOperationalResource , IAdminForthDataSourceConnectorBase , AdminForthResource } from '../types/Back.js' ;
2
2
import { AdminForthFilterOperators } from '../types/Common.js' ;
3
3
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
-
26
4
function sortsIfSort ( sort : IAdminForthSort | IAdminForthSort [ ] ) : IAdminForthSort [ ] {
27
5
return ( Array . isArray ( sort ) ? sort : [ sort ] ) as IAdminForthSort [ ] ;
28
6
}
@@ -40,7 +18,7 @@ export default class OperationalResource implements IOperationalResource {
40
18
return (
41
19
await this . dataConnector . getData ( {
42
20
resource : this . resourceConfig ,
43
- filters : filtersIfFilter ( filter ) ,
21
+ filters : this . dataConnector . validateAndNormalizeInputFilters ( filter ) ,
44
22
limit : 1 ,
45
23
offset : 0 ,
46
24
sort : [ ] ,
@@ -73,7 +51,7 @@ export default class OperationalResource implements IOperationalResource {
73
51
74
52
const { data } = await this . dataConnector . getData ( {
75
53
resource : this . resourceConfig ,
76
- filters : filtersIfFilter ( filter ) ,
54
+ filters : this . dataConnector . validateAndNormalizeInputFilters ( filter ) ,
77
55
limit : appliedLimit ,
78
56
offset : appliedOffset ,
79
57
sort : sortsIfSort ( sort ) ,
@@ -86,7 +64,7 @@ export default class OperationalResource implements IOperationalResource {
86
64
async count ( filter : IAdminForthSingleFilter | IAdminForthAndOrFilter | Array < IAdminForthSingleFilter | IAdminForthAndOrFilter > | undefined ) : Promise < number > {
87
65
return await this . dataConnector . getCount ( {
88
66
resource : this . resourceConfig ,
89
- filters : filtersIfFilter ( filter ) ,
67
+ filters : this . dataConnector . validateAndNormalizeInputFilters ( filter ) ,
90
68
} ) ;
91
69
}
92
70
0 commit comments