summaryrefslogtreecommitdiff
path: root/lib/gtc-contract/validations.ts
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-07-29 11:48:59 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-07-29 11:48:59 +0000
commit10f90dc68dec42e9a64e081cc0dce6a484447290 (patch)
tree5bc8bb30e03b09a602e7d414d943d0e7f24b1a0f /lib/gtc-contract/validations.ts
parent792fb0c21136eededecf52b5b4aa1a252bdc4bfb (diff)
(대표님, 박서영, 최겸) document-list-only, gtc, vendorDocu, docu-list-rule
Diffstat (limited to 'lib/gtc-contract/validations.ts')
-rw-r--r--lib/gtc-contract/validations.ts33
1 files changed, 32 insertions, 1 deletions
diff --git a/lib/gtc-contract/validations.ts b/lib/gtc-contract/validations.ts
index d00d795b..0566c1cb 100644
--- a/lib/gtc-contract/validations.ts
+++ b/lib/gtc-contract/validations.ts
@@ -70,4 +70,35 @@ export const createNewRevisionSchema = z.object({
export type GetGtcDocumentsSchema = Awaited<ReturnType<typeof searchParamsCache.parse>>
export type CreateGtcDocumentSchema = z.infer<typeof createGtcDocumentSchema>
export type UpdateGtcDocumentSchema = z.infer<typeof updateGtcDocumentSchema>
-export type CreateNewRevisionSchema = z.infer<typeof createNewRevisionSchema> \ No newline at end of file
+export type CreateNewRevisionSchema = z.infer<typeof createNewRevisionSchema>
+
+
+
+// 복제용 schema
+export const cloneGtcDocumentSchema = z.object({
+ sourceDocumentId: z.number().min(1, "원본 문서 ID가 필요합니다."),
+ type: z.enum(["standard", "project"]),
+ projectId: z.number().nullable().optional(),
+ title: z.string().optional(),
+ editReason: z.string().optional(),
+}).refine((data) => {
+ // 프로젝트 타입인 경우 projectId가 필수
+ if (data.type === "project") {
+ return data.projectId !== null && data.projectId !== undefined
+ }
+ return true
+}, {
+ message: "프로젝트 타입인 경우 프로젝트를 선택해야 합니다.",
+ path: ["projectId"]
+}).refine((data) => {
+ // 표준 타입인 경우 projectId는 null이어야 함
+ if (data.type === "standard") {
+ return data.projectId === null || data.projectId === undefined
+ }
+ return true
+}, {
+ message: "표준 타입인 경우 프로젝트를 선택할 수 없습니다.",
+ path: ["projectId"]
+})
+
+export type CloneGtcDocumentSchema = z.infer<typeof cloneGtcDocumentSchema> \ No newline at end of file