import { createSearchParamsCache, parseAsArrayOf, parseAsInteger, parseAsString, parseAsStringEnum, } from "nuqs/server" import * as z from "zod" import { getFiltersStateParser, getSortingStateParser } from "@/lib/parsers" import { PqCriterias, vendorPQSubmissions } from "@/db/schema/pq" 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 }, ]), code: parseAsString.withDefault(""), checkPoint: parseAsString.withDefault(""), description: parseAsString.withDefault(""), remarks: parseAsString.withDefault(""), groupName: parseAsString.withDefault(""), // advanced filter filters: getFiltersStateParser().withDefault([]), joinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"), search: parseAsString.withDefault(""), }) export type GetPQSchema = Awaited> export const searchParamsPQReviewCache = 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"), // 기본 필터 (새로 추가) pqBasicFilters: getFiltersStateParser().withDefault([]), pqBasicJoinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"), basicFilters: getFiltersStateParser().withDefault([]), basicJoinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"), // 검색 키워드 search: parseAsString.withDefault(""), // PQ 특화 필터 (기존 유지) vendorName: parseAsString.withDefault(""), vendorCode: parseAsString.withDefault(""), projectName: parseAsString.withDefault(""), type: parseAsStringEnum(["GENERAL", "PROJECT"]), status: parseAsStringEnum(["REQUESTED", "IN_PROGRESS", "SUBMITTED", "APPROVED", "REJECTED"]), submittedDateFrom: parseAsString.withDefault(""), submittedDateTo: parseAsString.withDefault(""), }); export type GetPQSubmissionsSchema = Awaited>