Alle Modelle fuer die fuenf Phasen in einer Migration, damit spaetere Phasen keine Umbauten an Kerntabellen brauchen. Was auch an der Service-Schicht vorbei gelten muss, steht als CHECK, partieller Index oder Trigger in der Datenbank: Personen-Keys ohne Private Key, genau ein Instanz-Deployment-Key, ein vertrauter Host-Key je Algorithmus, shell-sichere Zielbenutzer und Pfade. Das Protokoll ist append-only und per Hash-Kette verbunden; den Hash berechnet ein Trigger, damit keine Zeile ohne Verkettung entstehen kann (#005 baut darauf auf). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
22 lines
680 B
TypeScript
22 lines
680 B
TypeScript
import { execFileSync } from "node:child_process";
|
|
import "dotenv/config";
|
|
|
|
/**
|
|
* Spielt vor dem Testlauf alle Migrationen in die Testdatenbank ein.
|
|
*
|
|
* Absichtlich gegen TEST_DATABASE_URL und nie gegen DATABASE_URL: die Hilfen in
|
|
* tests/hilfen/db.ts leeren vor jedem Test alle Tabellen.
|
|
*/
|
|
export default function vorbereiten(): void {
|
|
const url = process.env["TEST_DATABASE_URL"];
|
|
if (!url) {
|
|
throw new Error(
|
|
"TEST_DATABASE_URL fehlt (siehe .env.example). Datenbanktests brauchen eine eigene Datenbank.",
|
|
);
|
|
}
|
|
execFileSync("pnpm", ["exec", "prisma", "migrate", "deploy"], {
|
|
env: { ...process.env, DATABASE_URL: url },
|
|
stdio: "pipe",
|
|
});
|
|
}
|