import { techSalesContactPossibleItems } from "@/db/schema/techSales" import { createSearchParamsCache, parseAsArrayOf, parseAsInteger, parseAsString, parseAsStringEnum, } from "nuqs/server" import * as z from "zod" import { getFiltersStateParser, getSortingStateParser } from "@/lib/parsers" export const searchParamsCache = createSearchParamsCache({ flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault([]), page: parseAsInteger.withDefault(1), perPage: parseAsInteger.withDefault(10), sort: getSortingStateParser().withDefault([ { id: "createdAt", desc: true }, ]), // 기본 필터 vendorName: parseAsString.withDefault(""), contactName: parseAsString.withDefault(""), vendorCode: parseAsString.withDefault(""), itemCode: parseAsString.withDefault(""), workType: parseAsString.withDefault(""), // 고급 필터 filters: getFiltersStateParser().withDefault([]), joinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"), search: parseAsString.withDefault(""), }) export type GetContactPossibleItemsSchema = Awaited> // 담당자별 아이템 생성용 스키마 (FK만 사용) export const contactPossibleItemSchema = z.object({ contactId: z.number().min(1, "담당자를 선택해주세요"), vendorPossibleItemId: z.number().min(1, "벤더 가능 아이템을 선택해주세요"), }) export type ContactPossibleItemSchema = z.infer