import { auth } from "@/lib/auth" import { prisma } from "@/lib/prisma" import { generateBackupCsv } from "@/lib/backup" import { NextResponse } from "next/server" export async function GET() { const session = await auth() if (!session?.user?.id) { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) } const userId = session.user.id try { const [drinks, ratings, wishlistItems, preferences, sharedLists, barItems] = await Promise.all([ prisma.drink.findMany({ where: { userId }, orderBy: { createdAt: "asc" }, }), prisma.rating.findMany({ where: { userId }, include: { drink: { select: { name: true } } }, orderBy: { createdAt: "asc" }, }), prisma.wishlistItem.findMany({ where: { userId }, orderBy: { createdAt: "asc" }, }), prisma.userPreference.findUnique({ where: { userId } }), prisma.sharedList.findMany({ where: { userId }, orderBy: { createdAt: "asc" }, }), prisma.barItem.findMany({ where: { userId }, orderBy: { createdAt: "asc" }, }), ]) const csv = generateBackupCsv( drinks, ratings, wishlistItems, preferences, sharedLists, barItems ) const date = new Date().toISOString().split("T")[0] return new Response(csv, { headers: { "Content-Type": "text/csv; charset=utf-8", "Content-Disposition": `attachment; filename="drinktracker-backup-${date}.csv"`, }, }) } catch (error) { console.error("Backup export error:", error) return NextResponse.json( { error: "Failed to generate backup" }, { status: 500 } ) } }