import { NextResponse } from "next/server" import { desc, eq } from "drizzle-orm" import { db } from "@/lib/db" import { rent_payments } from "@/lib/db/schema" import { getSessionUser } from "@/lib/session" import { toCsv } from "@/lib/db/admin-queries" export async function GET() { const user = await getSessionUser() if (!user) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) const rows = await db.query.rent_payments.findMany({ where: eq(rent_payments.user_id, user.id), with: { tenant: { columns: { first_name: true, last_name: true, email: true } }, property: { columns: { name: true } }, unit: { columns: { unit_number: true } }, }, orderBy: desc(rent_payments.due_date), }) const csv = toCsv( ["Tenant", "Email", "Property", "Unit", "Amount", "Due Date", "Paid Date", "Status", "Method", "Notes"], rows.map((p) => [ `${p.tenant?.first_name ?? ""} ${p.tenant?.last_name ?? ""}`, p.tenant?.email ?? "", p.property?.name ?? "", p.unit?.unit_number ?? "", p.amount ?? 0, p.due_date ?? "", p.paid_date ?? "", p.status ?? "", p.payment_method ?? "", p.notes ?? "", ]) ) return new NextResponse(csv, { headers: { "Content-Type": "text/csv; charset=utf-8", "Content-Disposition": 'attachment; filename="rent-payments.csv"', }, }) }