// /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 } ) } }