Files
ParisMuseesQuizz/src/utils/pagination.ts
T

25 lines
577 B
TypeScript

import { z } from "zod"
export interface Pagination {
skip: number
take: number
}
export const queryPaginationParser = z.object({
skip: z.coerce.number().optional().default(0),
take: z.coerce.number().optional().default(10),
})
export function getPaginationLinks(
query: Pagination,
routeName: string
): object {
const nextStart = query.skip + query.take
const prevStart = Math.max(0, query.skip - query.take)
return {
next: `/v1/${routeName}?start=${nextStart}&per_page=${query.take}`,
prev: `/v1/${routeName}?start=${prevStart}&per_page=${query.take}`,
}
}