summaryrefslogtreecommitdiff
path: root/app/api/attachment-delete/route.ts
diff options
context:
space:
mode:
Diffstat (limited to 'app/api/attachment-delete/route.ts')
-rw-r--r--app/api/attachment-delete/route.ts76
1 files changed, 76 insertions, 0 deletions
diff --git a/app/api/attachment-delete/route.ts b/app/api/attachment-delete/route.ts
new file mode 100644
index 00000000..254c579f
--- /dev/null
+++ b/app/api/attachment-delete/route.ts
@@ -0,0 +1,76 @@
+// /api/attachment-delete/route.ts
+
+import { NextRequest, NextResponse } from 'next/server'
+import db from '@/db/db'
+import { documentAttachments } from '@/db/schema' // 실제 스키마에 맞게 수정
+import { eq, and } from 'drizzle-orm'
+import fs from 'fs/promises'
+import path from 'path'
+
+export async function DELETE(request: NextRequest) {
+ try {
+ const { attachmentId, revisionId } = await request.json()
+
+ if (!attachmentId || !revisionId) {
+ return NextResponse.json(
+ { error: 'attachmentId and revisionId are required' },
+ { status: 400 }
+ )
+ }
+
+ // 1. 데이터베이스에서 첨부파일 정보 조회
+ const attachment = await db
+ .select()
+ .from(documentAttachments)
+ .where(
+ and(
+ eq(documentAttachments.id, attachmentId),
+ eq(documentAttachments.revisionId, revisionId)
+ )
+ )
+ .limit(1)
+
+ if (!attachment || attachment.length === 0) {
+ return NextResponse.json(
+ { error: 'Attachment not found' },
+ { status: 404 }
+ )
+ }
+
+ const attachmentData = attachment[0]
+
+ // 2. dolceFilePath 체크 - 있으면 삭제 불가
+ if (attachmentData.dolceFilePath && attachmentData.dolceFilePath.trim() !== '') {
+ return NextResponse.json(
+ { error: 'Cannot delete processed file' },
+ { status: 403 }
+ )
+ }
+
+ // 4. 데이터베이스에서 첨부파일 레코드 삭제
+ await db
+ .delete(documentAttachments)
+ .where(
+ and(
+ eq(documentAttachments.id, attachmentId),
+ eq(documentAttachments.revisionId, revisionId)
+ )
+ )
+
+ return NextResponse.json({
+ success: true,
+ message: 'Attachment deleted successfully',
+ deletedAttachmentId: attachmentId
+ })
+
+ } catch (error) {
+ console.error('Attachment deletion error:', error)
+ return NextResponse.json(
+ {
+ error: 'Internal server error',
+ details: error instanceof Error ? error.message : 'Unknown error'
+ },
+ { status: 500 }
+ )
+ }
+} \ No newline at end of file