diff options
Diffstat (limited to 'lib/gtc-contract/validations.ts')
| -rw-r--r-- | lib/gtc-contract/validations.ts | 33 |
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 |
