cpns / packages /api /src /lib /pagination.ts
rogasper's picture
chore(release): v0.0.1
439093c
Raw
History Blame Contribute Delete
544 Bytes
import { z } from "zod";
import { sql } from "drizzle-orm";
export const paginationSchema = z.object({
limit: z.number().min(1).max(50).default(20),
offset: z.number().min(0).default(0),
});
export type PaginationInput = z.infer<typeof paginationSchema>;
export interface PaginatedResult<T> {
items: T[];
total: number;
}
export function paginateDefaults(input?: PaginationInput) {
return {
limit: input?.limit ?? 20,
offset: input?.offset ?? 0,
};
}
export function countSql() {
return sql<number>`count(*)::int`;
}