import { NextRequest, NextResponse } from "next/server" import { auth } from "@/lib/auth" import { prisma } from "@/lib/prisma" import { unlink } from "fs/promises" import { join } from "path" import { existsSync } from "fs" export async function DELETE( req: NextRequest, { params }: { params: Promise<{ photoId: string }> } ) { try { const session = await auth() if (!session) { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) } // Only admins can delete photos if (session.user.role !== "ADMIN") { return NextResponse.json( { error: "Only admins can delete photos" }, { status: 403 } ) } const { photoId } = await params // Find the photo const photo = await prisma.photo.findUnique({ where: { id: photoId }, }) if (!photo) { return NextResponse.json({ error: "Photo not found" }, { status: 404 }) } // Delete all guesses associated with this photo first await prisma.guess.deleteMany({ where: { photoId: photoId }, }) // Delete the photo file if it's a local upload (starts with /uploads/) if (photo.url.startsWith("/uploads/")) { const filepath = join(process.cwd(), "public", photo.url) if (existsSync(filepath)) { try { await unlink(filepath) } catch (error) { console.error("Failed to delete file:", filepath, error) // Continue with database deletion even if file deletion fails } } } // Delete the photo await prisma.photo.delete({ where: { id: photoId }, }) return NextResponse.json({ success: true, message: "Photo deleted successfully" }) } catch (error) { console.error("Error deleting photo:", error) return NextResponse.json( { error: "Internal server error" }, { status: 500 } ) } }