@@ -78,31 +78,40 @@ const fetchTaskRequests = async (dev) => {
7878const fetchPaginatedTaskRequests = async ( queries = { } ) => {
7979 try {
8080 let taskRequestsSnapshot = taskRequestsCollection ;
81-
8281 let { next, prev, size, q : queryString } = queries ;
8382 if ( size ) size = parseInt ( size ) ;
8483
8584 const rqlQueryParser = new RQLQueryParser ( queryString ) ;
8685
87- Object . entries ( rqlQueryParser . getFilterQueries ( ) ) . forEach ( ( [ key , value ] ) => {
88- const valuesList = value . map (
89- ( query ) => query . operator === Operators . INCLUDE && TASK_REQUEST_FILTER_VALUES [ query . value ]
90- ) ;
91- taskRequestsSnapshot = taskRequestsSnapshot . where ( TASK_REQUEST_FILTER_KEYS [ key ] , "in" , valuesList ) ;
92- } ) ;
86+ const filterQueries = rqlQueryParser . getFilterQueries ( ) ;
87+
88+ for ( const [ filterKey , filterValue ] of Object . entries ( filterQueries ) ) {
89+ const valuesList = filterValue
90+ . map ( ( query ) =>
91+ query . operator === Operators . INCLUDE ? Reflect . get ( TASK_REQUEST_FILTER_VALUES , query . value ) : null
92+ )
93+ . filter ( Boolean ) ;
94+
95+ if ( Reflect . has ( TASK_REQUEST_FILTER_KEYS , filterKey ) ) {
96+ const fieldName = Reflect . get ( TASK_REQUEST_FILTER_KEYS , filterKey ) ;
97+ taskRequestsSnapshot = taskRequestsSnapshot . where ( fieldName , "in" , valuesList ) ;
98+ }
99+ }
93100
94101 const sortQueries = rqlQueryParser . getSortQueries ( ) ;
95102 const sortQueryEntries = Object . entries ( sortQueries ) ;
96103
97104 if ( sortQueryEntries . length ) {
98- sortQueryEntries . forEach ( ( [ key , value ] ) => {
99- taskRequestsSnapshot = taskRequestsSnapshot . orderBy (
100- TASK_REQUEST_SORT_KEYS [ key ] ,
101- TASK_REQUEST_SORT_VALUES [ value ]
102- ) ;
103- } ) ;
105+ for ( const [ sortKey , sortValue ] of sortQueryEntries ) {
106+ if ( Reflect . has ( TASK_REQUEST_SORT_KEYS , sortKey ) && Reflect . has ( TASK_REQUEST_SORT_VALUES , sortValue ) ) {
107+ const sortField = Reflect . get ( TASK_REQUEST_SORT_KEYS , sortKey ) ;
108+ const orderDirection = Reflect . get ( TASK_REQUEST_SORT_VALUES , sortValue ) ;
109+ taskRequestsSnapshot = taskRequestsSnapshot . orderBy ( sortField , orderDirection ) ;
110+ }
111+ }
104112 } else {
105- taskRequestsSnapshot = taskRequestsSnapshot . orderBy ( TASK_REQUEST_SORT_KEYS . created , "desc" ) ;
113+ const defaultField = Reflect . get ( TASK_REQUEST_SORT_KEYS , "created" ) ;
114+ taskRequestsSnapshot = taskRequestsSnapshot . orderBy ( defaultField , "desc" ) ;
106115 }
107116
108117 if ( next ) {
@@ -137,16 +146,13 @@ const fetchPaginatedTaskRequests = async (queries = {}) => {
137146 const isNextLinkRequired = size && resultDataLength === size ;
138147 const lastVisibleDoc = isNextLinkRequired && taskRequestsSnapshot . docs [ resultDataLength - 1 ] ;
139148 const firstDoc = taskRequestsSnapshot . docs [ 0 ] ;
140- const nextPageParams = {
141- ...queries ,
142- next : lastVisibleDoc ?. id ,
143- } ;
149+
150+ const nextPageParams = { ...queries , next : lastVisibleDoc ?. id } ;
144151 delete nextPageParams . prev ;
145- const prevPageParams = {
146- ...queries ,
147- prev : firstDoc ?. id ,
148- } ;
152+
153+ const prevPageParams = { ...queries , prev : firstDoc ?. id } ;
149154 delete prevPageParams . next ;
155+
150156 const nextLink = lastVisibleDoc ? generateLink ( nextPageParams ) : "" ;
151157 const prevLink = next || prev ? generateLink ( prevPageParams ) : "" ;
152158
0 commit comments