export const dynamic = 'force-dynamic' import { redirect } from 'next/navigation' import Link from 'next/link' import { asAdmin } from '@/lib/db/with-user' import { getSession } from '@/lib/auth/get-session' import { capaActions, incidents, users } from '@/lib/db/schema' import { eq, asc } from 'drizzle-orm' import { aliasedTable } from 'drizzle-orm' import { CapaBoard } from '@/components/capa/capa-board' export default async function CapaListPage() { const session = await getSession() if (!session) redirect('/login?redirect=/hse/capa') const ownerAlias = aliasedTable(users, 'owner') const rows = await asAdmin(db => db.select({ id: capaActions.id, incidentId: capaActions.incidentId, description: capaActions.description, department: capaActions.department, dueDate: capaActions.dueDate, priority: capaActions.priority, status: capaActions.status, incidentRefNo: incidents.referenceNo, ownerName: ownerAlias.name, }) .from(capaActions) .leftJoin(incidents, eq(capaActions.incidentId, incidents.id)) .leftJoin(ownerAlias, eq(capaActions.ownerUserId, ownerAlias.id)) .orderBy(asc(capaActions.dueDate)) ) const capas = rows.map(r => ({ id: r.id, incident_id: r.incidentId, description: r.description, department: r.department, due_date: r.dueDate, priority: r.priority, status: r.status, incidents: { reference_no: r.incidentRefNo ?? null }, owner: r.ownerName ? { name: r.ownerName } : null, })) return (

CAPA Board

← Incidents
) }