import { NextResponse } from 'next/server' import { db } from '@/lib/db' import { COMMIT, VERSION } from '@/lib/version' import { speicherZustand } from '@/lib/speicher/pruefung' /** * Betriebsbereitschaft fuer den Healthcheck in docker-compose. * * Bewusst ohne Anmeldung, aber ohne jede Auskunft ueber Inhalte: geprueft * wird, ob Datenbank und Dateiablage antworten. * * Nur die Datenbank entscheidet ueber 503. Ein gestoerter Speicher wird * gemeldet, laesst den Behaelter aber laufen - sonst wuerde der * Healthcheck ihn neu starten, und die ganze Akte waere weg wegen eines * Teils, den ein Neustart nicht repariert. * * Die Version steht dabei: sie wird beim Aktualisieren gebraucht, um zu * sehen, ob der neue Stand tatsaechlich laeuft. Das ist keine Auskunft * ueber die betreuten Daten, und die Adresse ist ohnehin nur ueber den * eigenen Reverse Proxy erreichbar. */ export const runtime = 'nodejs' export const dynamic = 'force-dynamic' export async function GET() { try { await db.$queryRaw`SELECT 1` } catch { return NextResponse.json( { status: 'datenbank nicht erreichbar', version: VERSION }, { status: 503, headers: { 'Cache-Control': 'no-store' } }, ) } // Der Speicher wird mitgeprueft, aber er entscheidet NICHT ueber die // Betriebsbereitschaft: Faellt er aus, funktioniert alles ausser dem // Ablegen von Dateien. Ein 503 wuerde den Behaelter neu starten lassen // und die ganze Akte unerreichbar machen - wegen eines Teils, den ein // Neustart nicht repariert. const speicher = await speicherZustand() return NextResponse.json( { status: 'bereit', version: VERSION, commit: COMMIT || undefined, speicher: speicher.ok ? { status: 'bereit', treiber: speicher.treiber } : { status: 'gestoert', treiber: speicher.treiber, art: speicher.art }, }, { headers: { 'Cache-Control': 'no-store' } }, ) }