diff options
Diffstat (limited to 'app/api/upload/generalContract/complete/route.ts')
| -rw-r--r-- | app/api/upload/generalContract/complete/route.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/app/api/upload/generalContract/complete/route.ts b/app/api/upload/generalContract/complete/route.ts new file mode 100644 index 00000000..5f711f07 --- /dev/null +++ b/app/api/upload/generalContract/complete/route.ts @@ -0,0 +1,35 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { createContractTemplate } from '@/lib/general-contract-template/service'; +import { revalidatePath, revalidateTag } from 'next/cache'; +import { createContractTemplateSchema } from '@/lib/general-contract-template/validations'; + +export async function POST(request: NextRequest) { + try { + const json = await request.json(); + const parsed = createContractTemplateSchema.safeParse(json); + + if (!parsed.success) { + return NextResponse.json( + { success: false, error: parsed.error.flatten() }, + { status: 400 } + ); + } + + const { data, error } = await createContractTemplate(parsed.data); + + revalidatePath('/evcp/general-contract-template'); + revalidateTag("general-contract-templates"); + + if (error) { + throw new Error(error); + } + + return NextResponse.json({ success: true, data }); + + } catch (error) { + console.error('템플릿 저장 오류:', error); + return NextResponse.json({ success: false, error: '서버 오류' }, { status: 500 }); + } +} + + |
