import { listCodes } from "@/lib/db/code-lists"; import { listActiveLanguageCodes } from "@/lib/db/languages"; import { authErrorResponse, requireRole } from "@/lib/auth/session"; import { toCsv } from "@/lib/csv"; export async function GET() { try { await requireRole(["staff", "admin"]); const [items, activeCodes] = await Promise.all([ listCodes("allergens"), listActiveLanguageCodes(), ]); const langCodes = activeCodes.filter((c) => c !== "de"); const rows = [ ["code", "name", ...langCodes.map((c) => `name_${c}`)], ...items.map((i) => [i.code, i.name, ...langCodes.map((c) => i.translations[c] ?? "")]), ]; return new Response(toCsv(rows), { headers: { "Content-Type": "text/csv; charset=utf-8", "Content-Disposition": 'attachment; filename="allergene.csv"', }, }); } catch (err) { const res = authErrorResponse(err); if (res) return res; throw err; } }