34 lines
915 B
TypeScript
34 lines
915 B
TypeScript
import { NextResponse } from "next/server";
|
|
import { prisma } from "@/lib/db";
|
|
import { getSessionUser } from "@/lib/auth";
|
|
import { deleteFromR2 } from "@/lib/r2";
|
|
|
|
export async function DELETE() {
|
|
const session = await getSessionUser();
|
|
if (!session) {
|
|
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
}
|
|
|
|
// Get all files for the user
|
|
const files = await prisma.file.findMany({
|
|
where: { userId: session.userId },
|
|
select: { id: true, key: true },
|
|
});
|
|
|
|
if (files.length === 0) {
|
|
return NextResponse.json({ ok: true, deleted: 0 });
|
|
}
|
|
|
|
// Delete all files from R2
|
|
const deletePromises = files.map((file) => deleteFromR2(file.key));
|
|
await Promise.all(deletePromises);
|
|
|
|
// Delete all file records from database
|
|
await prisma.file.deleteMany({
|
|
where: { userId: session.userId },
|
|
});
|
|
|
|
return NextResponse.json({ ok: true, deleted: files.length });
|
|
}
|
|
|