summaryrefslogtreecommitdiff
path: root/lib/tech-vendors/validations.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tech-vendors/validations.ts')
-rw-r--r--lib/tech-vendors/validations.ts12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/tech-vendors/validations.ts b/lib/tech-vendors/validations.ts
index bae3e5b4..ee076945 100644
--- a/lib/tech-vendors/validations.ts
+++ b/lib/tech-vendors/validations.ts
@@ -46,7 +46,8 @@ export const searchParamsCache = createSearchParamsCache({
// 예) 코드 검색
vendorCode: parseAsString.withDefault(""),
-
+ // 벤더 타입 필터링 (다중 선택 가능)
+ vendorType: parseAsStringEnum(["ship", "top", "hull"]),
// 필요하다면 이메일 검색 / 웹사이트 검색 등 추가 가능
email: parseAsString.withDefault(""),
website: parseAsString.withDefault(""),
@@ -117,6 +118,10 @@ export const updateTechVendorSchema = z.object({
phone: z.string().optional(),
email: z.string().email("유효한 이메일 주소를 입력해주세요").optional(),
website: z.string().url("유효한 URL을 입력해주세요").optional(),
+ techVendorType: z.union([
+ z.array(z.enum(VENDOR_TYPES)).min(1, "최소 하나의 벤더 타입을 선택해주세요"),
+ z.string().min(1, "벤더 타입을 선택해주세요")
+ ]).optional(),
status: z.enum(techVendors.status.enumValues).optional(),
userId: z.number().optional(),
comment: z.string().optional(),
@@ -155,7 +160,10 @@ export const createTechVendorSchema = z
files: z.any().optional(),
status: z.enum(techVendors.status.enumValues).default("ACTIVE"),
- techVendorType: z.enum(VENDOR_TYPES).default("조선"),
+ techVendorType: z.union([
+ z.array(z.enum(VENDOR_TYPES)).min(1, "최소 하나의 벤더 타입을 선택해주세요"),
+ z.string().min(1, "벤더 타입을 선택해주세요")
+ ]).default(["조선"]),
representativeName: z.union([z.string().max(255), z.literal("")]).optional(),
representativeBirth: z.union([z.string().max(20), z.literal("")]).optional(),