export const dynamic = 'force-dynamic' import { notFound, redirect } from 'next/navigation' import Link from 'next/link' import { asAdmin } from '@/lib/db/with-user' import { getSession } from '@/lib/auth/get-session' import { incidents, investigations } from '@/lib/db/schema' import { eq, desc } from 'drizzle-orm' import { InvestigationForm } from '@/components/incidents/investigation-form' interface Props { params: Promise<{ id: string }> } export default async function InvestigationPage({ params }: Props) { const { id } = await params const session = await getSession() if (!session) redirect(`/login?redirect=/hse/incidents/${id}/investigation`) if (!['hse', 'admin'].includes(session.role)) redirect('/hse/incidents') const [incident] = await asAdmin(db => db.select({ id: incidents.id, referenceNo: incidents.referenceNo, status: incidents.status, }) .from(incidents) .where(eq(incidents.id, id)) .limit(1) ) if (!incident) notFound() if (!['triaged', 'investigating'].includes(incident.status)) redirect(`/hse/incidents/${id}`) const [existing] = await asAdmin(db => db.select({ id: investigations.id }) .from(investigations) .where(eq(investigations.incidentId, id)) .orderBy(desc(investigations.createdAt)) .limit(1) ) return (
← Back to incident

Investigation Workspace

{incident.referenceNo ?? id}

) }