@@ -78,43 +78,50 @@ export function updateNestedFields(inputObject: Record<string, any>, nestedObjec
7878 ! Array . isArray ( inputObject [ field ] ) &&
7979 ! ( inputObject [ field ] instanceof Date )
8080 ) {
81- const updateNestedObject : Record < string , any > = { } ;
8281 const updateNestedObjectSet = updateNestedFields ( inputObject [ field ] , field ) ;
8382 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 ] ;
8685 }
87- updateObject = { ...updateObject , ...updateNestedObject } ;
8886 } else {
89- const fieldName = `${ nestedObjectName } .${ field } ` ;
90- updateObject [ fieldName ] = inputObject [ field ] ;
87+ const fieldName = `${ nestedObjectName } .${ field } ` ;
88+ updateObject [ fieldName ] = inputObject [ field ] ;
9189 }
9290 }
9391 return updateObject ;
9492}
9593
9694export 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 > ) => {
10297 const fromDate = isScalarDate ( filters . fromDate )
10398 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' } } ) ,
106117 ...( filters ?. description && {
107118 description : { $regex : filters . description , $options : 'i' } ,
108119 } ) }
109120 }
110121
111122
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 } ) } }
120127
0 commit comments