File size: 544 Bytes
598f0d5 439093c 598f0d5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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`;
}
|