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`;
}