Add sorting
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user