summaryrefslogtreecommitdiff
path: root/lib/approval-template/validations.ts
blob: 3b60e47811f659f1d6705a7b9183b2b94da0d4c9 (plain)
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
27
import {
  createSearchParamsCache,
  parseAsArrayOf,
  parseAsInteger,
  parseAsString,
  parseAsStringEnum,
} from 'nuqs/server';
import { z } from 'zod';

import { getFiltersStateParser, getSortingStateParser } from '@/lib/parsers';
import { approvalTemplates } from '@/db/schema/knox/approvals';

export const SearchParamsApprovalTemplateCache = createSearchParamsCache({
  flags: parseAsArrayOf(z.enum(['advancedTable', 'floatingBar'])).withDefault([]),
  page: parseAsInteger.withDefault(1),
  perPage: parseAsInteger.withDefault(10),
  sort: getSortingStateParser<typeof approvalTemplates>().withDefault([
    { id: 'updatedAt', desc: true },
  ]),
  filters: getFiltersStateParser().withDefault([]),
  joinOperator: parseAsStringEnum(['and', 'or']).withDefault('and'),
  search: parseAsString.withDefault(''),
});

export type GetApprovalTemplateSchema = Awaited<
  ReturnType<typeof SearchParamsApprovalTemplateCache.parse>
>;