import { NextResponse } from "next/server" import { asc, eq } from "drizzle-orm" import { db } from "@/lib/db" import { tenants } from "@/lib/db/schema" import { getSessionUser } from "@/lib/session" export async function GET() { const user = await getSessionUser() if (!user) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) const rows = await db.query.tenants.findMany({ where: eq(tenants.user_id, user.id), with: { property: { columns: { name: true } }, unit: { columns: { unit_number: true } }, }, orderBy: asc(tenants.last_name), }) const headers = ["First Name", "Last Name", "Email", "Phone", "Property", "Unit", "Status", "Move In Date", "Notes"] const lines = [ headers.join(","), ...rows.map((t) => [ `"${t.first_name ?? ""}"`, `"${t.last_name ?? ""}"`, `"${t.email ?? ""}"`, `"${t.phone ?? ""}"`, `"${t.property?.name ?? ""}"`, `"${t.unit?.unit_number ?? ""}"`, t.status ?? "", t.move_in_date ?? "", `"${(t.notes ?? "").replace(/"/g, "'")}"`, ].join(",")) ] const csv = lines.join("\n") return new NextResponse(csv, { headers: { "Content-Type": "text/csv; charset=utf-8", "Content-Disposition": 'attachment; filename="tenants.csv"', }, }) }