@@ -78,43 +78,50 @@ export function updateNestedFields(inputObject: Record<string, any>, nestedObjec
78
78
! Array . isArray ( inputObject [ field ] ) &&
79
79
! ( inputObject [ field ] instanceof Date )
80
80
) {
81
- const updateNestedObject : Record < string , any > = { } ;
82
81
const updateNestedObjectSet = updateNestedFields ( inputObject [ field ] , field ) ;
83
82
for ( const nestedField in updateNestedObjectSet ) {
84
- const fieldName = `${ field } .${ nestedField } ` ;
85
- updateNestedObject [ fieldName ] = updateNestedObjectSet [ field ] ;
83
+ const fieldName = `${ nestedObjectName } .${ nestedField } ` ;
84
+ updateObject [ fieldName ] = updateNestedObjectSet [ nestedField ] ;
86
85
}
87
- updateObject = { ...updateObject , ...updateNestedObject } ;
88
86
} else {
89
- const fieldName = `${ nestedObjectName } .${ field } ` ;
90
- updateObject [ fieldName ] = inputObject [ field ] ;
87
+ const fieldName = `${ nestedObjectName } .${ field } ` ;
88
+ updateObject [ fieldName ] = inputObject [ field ] ;
91
89
}
92
90
}
93
91
return updateObject ;
94
92
}
95
93
96
94
export const isScalarDate = ( obj : unknown ) : boolean => typeof obj === 'string' && obj !== null && ! ! Date . parse ( obj ) ;
97
- export const inputServiceFiltersSet = ( filters : any ) => {
98
- if ( ! filters ) return { }
99
- const pa =
100
- filters &&
101
- Object . fromEntries ( Object . entries ( filters ) . filter ( ( v ) => v !== null && v !== undefined && v [ 0 ] !== 'fromDate' && v [ 0 ] !== 'toDate' ) ) ;
95
+
96
+ export const inputDateFilter = ( filters : Record < string , any > ) => {
102
97
const fromDate = isScalarDate ( filters . fromDate )
103
98
const toDate = isScalarDate ( filters . toDate )
104
-
105
- return { ...pa , ...( toDate && { startDate : { $lte : new Date ( filters . toDate as string ) } } ) , ...( fromDate && { startDate : { $gte : new Date ( filters . fromDate as string ) } } ) , ...( filters ?. name && { name : { $regex : filters . name , $options : 'i' } } ) ,
99
+ const dateFilter : { $gte ?: string | undefined , $lte ?: string | undefined } = { } ;
100
+ if ( fromDate ) {
101
+ dateFilter . $gte = filters . fromDate as string ;
102
+ }
103
+ if ( toDate ) {
104
+ dateFilter . $lte = filters . toDate as string ;
105
+ }
106
+ return dateFilter
107
+ }
108
+
109
+ export const simpleFieldsFilter = ( filters : Record < string , any > ) =>
110
+ filters &&
111
+ Object . fromEntries ( Object . entries ( filters ) . filter ( ( v ) => v !== null && v !== undefined && v [ 0 ] !== 'fromDate' && v [ 0 ] !== 'toDate' ) ) ;
112
+
113
+ export const inputServiceFiltersSet = ( filters : Record < string , any > | null | undefined ) => {
114
+ if ( ! filters ) return { }
115
+ const dateFilter = inputDateFilter ( filters )
116
+ return { ...simpleFieldsFilter ( filters ) , ...( ( dateFilter . $gte || dateFilter . $lte ) && { startDate : dateFilter } ) , ...( filters ?. name && { name : { $regex : filters . name , $options : 'i' } } ) ,
106
117
...( filters ?. description && {
107
118
description : { $regex : filters . description , $options : 'i' } ,
108
119
} ) }
109
120
}
110
121
111
122
112
- export const inputBooksFiltersSet = ( filters : any ) => {
113
- if ( ! filters ) return { }
114
- const pa =
115
- filters &&
116
- Object . fromEntries ( Object . entries ( filters ) . filter ( ( v ) => v !== null && v !== undefined && v [ 0 ] !== 'fromDate' && v [ 0 ] !== 'toDate' ) ) ;
117
- const fromDate = isScalarDate ( filters . fromDate )
118
- const toDate = isScalarDate ( filters . toDate )
119
- return { ...pa , ...( toDate && { 'comments.to' : { $lte : new Date ( filters . toDate as string ) } } ) , ...( fromDate && { 'comments.from' : { $gte : new Date ( filters . fromDate as string ) } } ) } }
123
+ export const inputBooksFiltersSet = ( filters : Record < string , any > | null | undefined ) => {
124
+ if ( ! filters ) return { }
125
+ const dateFilter = inputDateFilter ( filters )
126
+ return { ...simpleFieldsFilter ( filters ) , ...( ( dateFilter . $gte || dateFilter . $lte ) && { 'comments.from' : dateFilter } ) } }
120
127
0 commit comments