import * as z from "zod" import { createSearchParamsCache, parseAsArrayOf, parseAsInteger, parseAsString, parseAsStringEnum } from "nuqs/server" import { getFiltersStateParser, getSortingStateParser } from "@/lib/parsers" import { ProjectGtcView } from "@/db/schema" export const projectGtcSearchParamsSchema = createSearchParamsCache({ flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault([]), page: parseAsInteger.withDefault(1), perPage: parseAsInteger.withDefault(10), sort: getSortingStateParser().withDefault([ { id: "projectCreatedAt", desc: true }, ]), // advanced filter filters: getFiltersStateParser().withDefault([]), joinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"), search: parseAsString.withDefault(""), }) export const projectGtcFileSchema = z.object({ projectId: z.number().min(1, "프로젝트 ID는 필수입니다."), file: z.instanceof(File).refine((file) => file.size > 0, "파일은 필수입니다."), }) export type ProjectGtcSearchParams = Awaited> export type ProjectGtcFileInput = z.infer