import { NextRequest, NextResponse } from "next/server"; import { PrismaClient } from "@prisma/client"; const prisma = new PrismaClient(); export const POST = async (req: NextRequest) => { try { const formData = await req.formData(); const body = Object.fromEntries(formData); const file = (body.file as File) || null; if (!file) { const response = NextResponse.json({ success: false, error: "No file provided", }, { status: 400 }); response.headers.set('Access-Control-Allow-Origin', '*'); return response; } // Convert file to buffer const buffer = Buffer.from(await file.arrayBuffer()); // Store file in database const savedFile = await prisma.file.create({ data: { filename: file.name, mimetype: file.type, size: file.size, data: buffer, }, }); const response = NextResponse.json({ success: true, file: { id: savedFile.id, filename: savedFile.filename, mimetype: savedFile.mimetype, size: savedFile.size, createdAt: savedFile.createdAt, }, }); response.headers.set('Access-Control-Allow-Origin', '*'); return response; } catch (error) { console.error("Upload error:", error); const response = NextResponse.json({ success: false, error: "Failed to upload file", }, { status: 500 }); response.headers.set('Access-Control-Allow-Origin', '*'); return response; } finally { await prisma.$disconnect(); } }; export const OPTIONS = async () => { const response = new NextResponse(null, { status: 200 }); response.headers.set('Access-Control-Allow-Origin', '*'); response.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization'); return response; };