MCPcopy Create free account
hub / github.com/RealDevSquad/website-backend / fetchPaginatedTaskRequests

Function fetchPaginatedTaskRequests

models/taskRequests.js:78–168  ·  view source on GitHub ↗
(queries = {})

Source from the content-addressed store, hash-verified

76};
77
78const fetchPaginatedTaskRequests = async (queries = {}) => {
79 try {
80 let taskRequestsSnapshot = taskRequestsCollection;
81 let { next, prev, size, q: queryString } = queries;
82 if (size) size = parseInt(size);
83
84 const rqlQueryParser = new RQLQueryParser(queryString);
85
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 }
100
101 const sortQueries = rqlQueryParser.getSortQueries();
102 const sortQueryEntries = Object.entries(sortQueries);
103
104 if (sortQueryEntries.length) {
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 }
112 } else {
113 const defaultField = Reflect.get(TASK_REQUEST_SORT_KEYS, "created");
114 taskRequestsSnapshot = taskRequestsSnapshot.orderBy(defaultField, "desc");
115 }
116
117 if (next) {
118 const data = await taskRequestsCollection.doc(next).get();
119 if (!data.data()) {
120 return {
121 statusCode: 400,
122 error: "Bad Request",
123 message: `${TASK_REQUEST_ERROR_MESSAGE.INVALID_NEXT}: ${next}`,
124 };
125 }
126 taskRequestsSnapshot = taskRequestsSnapshot.startAfter(data).limit(size);
127 } else if (prev) {
128 const data = await taskRequestsCollection.doc(prev).get();
129 if (!data.data()) {
130 return {
131 statusCode: 400,
132 error: "Bad Request",
133 message: `${TASK_REQUEST_ERROR_MESSAGE.INVALID_PREV}: ${prev}`,
134 };
135 }

Callers 1

Calls 6

getFilterQueriesMethod · 0.95
getSortQueriesMethod · 0.95
buildTaskRequestsFunction · 0.85
transformTaskRequestsFunction · 0.85
generateLinkFunction · 0.85
getMethod · 0.80

Tested by

no test coverage detected