import { createSearchParamsCache, parseAsArrayOf, parseAsInteger, parseAsString, parseAsStringEnum,parseAsBoolean } from "nuqs/server" import * as z from "zod" import { getFiltersStateParser, getSortingStateParser } from "@/lib/parsers" import { ProcurementRfqsView, ProcurementVendorQuotations } from "@/db/schema"; // ======================= // 1) SearchParams (목록 필터링/정렬) // ======================= export const searchParamsCache = createSearchParamsCache({ flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault([]), page: parseAsInteger.withDefault(1), perPage: parseAsInteger.withDefault(10), sort: getSortingStateParser().withDefault([ { id: "updatedAt", desc: true }, ]), // 고급 필터 filters: getFiltersStateParser().withDefault([]), joinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"), // 기본 필터 (RFQFilterBox) - 새로운 필드 추가 basicFilters: getFiltersStateParser().withDefault([]), basicJoinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"), search: parseAsString.withDefault(""), from: parseAsString.withDefault(""), to: parseAsString.withDefault(""), }); export type GetPORfqsSchema = Awaited>; export const searchParamsVendorRfqCache = createSearchParamsCache({ flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault([]), page: parseAsInteger.withDefault(1), perPage: parseAsInteger.withDefault(10), sort: getSortingStateParser().withDefault([ { id: "updatedAt", desc: true }, ]), // 고급 필터 filters: getFiltersStateParser().withDefault([]), joinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"), // 기본 필터 (RFQFilterBox) - 새로운 필드 추가 basicFilters: getFiltersStateParser().withDefault([]), basicJoinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"), search: parseAsString.withDefault(""), from: parseAsString.withDefault(""), to: parseAsString.withDefault(""), }); export type GetQuotationsSchema = Awaited>;