Add sorting

This commit is contained in:
2025-01-02 11:19:44 +05:30
parent 40b2ab54f0
commit 83786e2994
5 changed files with 109 additions and 70 deletions

View File

@@ -9,6 +9,29 @@ export const pageMetadata = z.object({
export const pageQueryParams = z.object({
page: z.number().optional(),
pageSize: z.number().optional(),
sort: z.string().optional(),
filter: z.string().optional(),
});
export type PageQueryParams = z.infer<typeof pageQueryParams>;
export function getSortObject(
params: PageQueryParams,
validFields: Array<string>
) {
const sortObj: Record<string, 1 | -1> = {};
if (params.sort && params.sort != "") {
const sortOptions = params.sort.split(",");
sortOptions.forEach((item) => {
const order = item.startsWith("-") ? -1 : 1;
const field = item.replace("-", "").trim();
if (validFields.includes(field)) sortObj[field] = order;
});
}
if (Object.keys(sortObj).length == 0) sortObj["createdAt"] = -1;
return sortObj;
}