diff options
Diffstat (limited to 'lib/techsales-rfq/validations.ts')
| -rw-r--r-- | lib/techsales-rfq/validations.ts | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/lib/techsales-rfq/validations.ts b/lib/techsales-rfq/validations.ts index 9d960525..c373b576 100644 --- a/lib/techsales-rfq/validations.ts +++ b/lib/techsales-rfq/validations.ts @@ -79,6 +79,78 @@ export const searchParamsDashboardCache = createSearchParamsCache({ export type GetTechSalesDashboardSchema = Awaited<ReturnType<typeof searchParamsDashboardCache.parse>>; +// 조선 RFQ용 SearchParams +export const searchParamsShipCache = createSearchParamsCache({ + flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault([]), + page: parseAsInteger.withDefault(1), + perPage: parseAsInteger.withDefault(10), + sort: getSortingStateParser<typeof techSalesRfqs>().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 GetTechSalesShipRfqsSchema = Awaited<ReturnType<typeof searchParamsShipCache.parse>>; + +// 해양 TOP RFQ용 SearchParams +export const searchParamsTopCache = createSearchParamsCache({ + flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault([]), + page: parseAsInteger.withDefault(1), + perPage: parseAsInteger.withDefault(10), + sort: getSortingStateParser<typeof techSalesRfqs>().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 GetTechSalesTopRfqsSchema = Awaited<ReturnType<typeof searchParamsTopCache.parse>>; + +// 해양 HULL RFQ용 SearchParams +export const searchParamsHullCache = createSearchParamsCache({ + flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault([]), + page: parseAsInteger.withDefault(1), + perPage: parseAsInteger.withDefault(10), + sort: getSortingStateParser<typeof techSalesRfqs>().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 GetTechSalesHullRfqsSchema = Awaited<ReturnType<typeof searchParamsHullCache.parse>>; + // RFQ 생성 스키마 export const createTechSalesRfqSchema = z.object({ itemId: z.number(), @@ -89,6 +161,7 @@ export const createTechSalesRfqSchema = z.object({ rfqSealedYn: z.boolean().default(false), picCode: z.string().optional(), remark: z.string().optional().nullable(), + rfqType: z.enum(["SHIP", "TOP", "HULL"]).default("SHIP"), }); export type CreateTechSalesRfqSchema = z.infer<typeof createTechSalesRfqSchema>; |
