import { createSearchParamsCache, parseAsArrayOf, parseAsInteger, parseAsString, parseAsStringEnum, } from "nuqs/server" import * as z from "zod" import { getFiltersStateParser, getSortingStateParser } from "@/lib/parsers" import { VendorPool } from "./types" export const vendorPoolSearchParamsCache = createSearchParamsCache({ // UI 모드나 플래그 관련 flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault([]), // 페이징 page: parseAsInteger.withDefault(1), perPage: parseAsInteger.withDefault(10), // 정렬 (등재일 기준 내림차순) sort: getSortingStateParser().withDefault([ { id: "registrationDate", desc: true }, ]), // Vendor Pool 관련 필드 constructionSector: parseAsString.withDefault(""), // 공사부문 htDivision: parseAsString.withDefault(""), // H/T구분 discipline: parseAsString.withDefault(""), // 설계공종 equipBulkDivision: parseAsString.withDefault(""), // Equip/Bulk 구분 // 자재 정보 materialGroupCode: parseAsString.withDefault(""), // 자재그룹 코드 materialGroupName: parseAsString.withDefault(""), // 자재그룹 명 similarMaterialNamePurchase: parseAsString.withDefault(""), // 유사자재명 (구매) // 협력업체 정보 vendorCode: parseAsString.withDefault(""), // 협력업체 코드 vendorName: parseAsString.withDefault(""), // 협력업체 명 // 인증/상태 정보 faStatus: parseAsString.withDefault(""), // FA현황 tier: parseAsString.withDefault(""), // 등급 // 위치 정보 headquarterLocation: parseAsString.withDefault(""), // 본사 위치 manufacturingLocation: parseAsString.withDefault(""), // 제작/선적지 // AVL 정보 avlVendorName: parseAsString.withDefault(""), // AVL 등재업체명 similarVendorName: parseAsString.withDefault(""), // 유사업체명 // 상태 정보 isBlacklist: parseAsString.withDefault(""), // Blacklist isBcc: parseAsString.withDefault(""), // BCC // 실적 정보 recentQuoteNumber: parseAsString.withDefault(""), // 최근견적번호 recentOrderNumber: parseAsString.withDefault(""), // 최근발주번호 // 업데이트 히스토리 registrant: parseAsString.withDefault(""), // 등재자 lastModifier: parseAsString.withDefault(""), // 최종변경자 // 고급 필터(Advanced) & 검색 filters: getFiltersStateParser().withDefault([]), joinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"), search: parseAsString.withDefault(""), }) // 최종 타입 export type GetVendorPoolSchema = Awaited>