import { NextRequest, NextResponse } from 'next/server'; import { db } from '@/app/db/drizzle'; import { emails } from '@/app/db/schema'; import { authenticate, getS3Client } from '@/app/lib/utils'; import { inArray } from 'drizzle-orm'; import { DeleteObjectCommand } from '@aws-sdk/client-s3'; export async function POST(req: NextRequest) { if (!authenticate(req)) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); const { keys, bucket } = await req.json(); if (!Array.isArray(keys) || keys.length === 0 || !bucket) { return NextResponse.json({ error: 'Invalid parameters' }, { status: 400 }); } try { const s3 = getS3Client(); // Delete from S3 const deletePromises = keys.map(key => s3.send(new DeleteObjectCommand({ Bucket: bucket, Key: key })) .catch(err => { console.error(`Failed to delete ${key} from S3:`, err); return null; }) ); await Promise.all(deletePromises); // Delete from database await db.delete(emails).where(inArray(emails.s3Key, keys)); return NextResponse.json({ success: true, count: keys.length }); } catch (error) { console.error('Error deleting emails:', error); return NextResponse.json({ error: 'Failed to delete emails' }, { status: 500 }); } }