import { createSearchParamsCache, parseAsArrayOf, parseAsInteger, parseAsString, parseAsStringEnum, } from "nuqs/server" import * as z from "zod" import { getFiltersStateParser, getSortingStateParser } from "@/lib/parsers" import { BiddingProjects } from "@/db/schema" export const searchParamsBidProjectsCache = createSearchParamsCache({ flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault( [] ), page: parseAsInteger.withDefault(1), perPage: parseAsInteger.withDefault(10), sort: getSortingStateParser().withDefault([ { id: "createdAt", desc: true }, ]), // advanced filter filters: getFiltersStateParser().withDefault([]), joinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"), search: parseAsString.withDefault(""), }) export type GetBidProjectListsSchema = Awaited> // 프로젝트 업데이트 스키마 (TOP 타입용) export const updateBiddingProjectSchema = z.object({ id: z.number().int().positive(), projNm: z.string().max(90).optional().nullable(), kunnrNm: z.string().max(30).optional().nullable(), cls1Nm: z.string().max(30).optional().nullable(), ptypeNm: z.string().max(40).optional().nullable(), pmodelNm: z.string().max(40).optional().nullable(), pmodelSz: z.string().max(20).optional().nullable(), txt30: z.string().max(30).optional().nullable(), estmPm: z.string().max(30).optional().nullable(), }) export type UpdateBiddingProjectSchema = z.infer