export const dynamic = 'force-dynamic' import { NextResponse } from 'next/server' import { createClient } from '@/lib/supabase/server' export async function GET() { const supabase = await createClient() const { data: { user } } = await supabase.auth.getUser() if (!user) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) const { data: incidents, error } = await supabase .from('incidents') .select('id, status, incident_type, sites (name)') if (error) return NextResponse.json({ error: 'Failed to fetch stats' }, { status: 500 }) const rows = incidents ?? [] const total = rows.length const closed = rows.filter(r => r.status === 'closed').length const open = total - closed const by_type: Record = {} for (const r of rows) { by_type[r.incident_type] = (by_type[r.incident_type] ?? 0) + 1 } const siteMap: Record = {} for (const r of rows) { const name = (r.sites as { name: string } | null)?.name ?? 'Unknown' siteMap[name] = (siteMap[name] ?? 0) + 1 } const by_site = Object.entries(siteMap).map(([name, count]) => ({ name, count })) .sort((a, b) => b.count - a.count) return NextResponse.json({ total, open, closed, by_type, by_site }) }