import { PrismaPg } from "@prisma/adapter-pg"; import { PrismaClient } from "@/generated/prisma/client"; const url = process.env["TEST_DATABASE_URL"] ?? process.env["DATABASE_URL"]; /** Ohne Testdatenbank ueberspringen sich die Datenbanktests statt fehlzuschlagen. */ export const datenbankVerfuegbar = Boolean(url); export const testPrisma = new PrismaClient({ adapter: new PrismaPg({ connectionString: url ?? "postgresql://localhost:5432/laufzettel_test", }), }); /** Leert alle Tabellen; die Reihenfolge spielt dank CASCADE keine Rolle. */ export async function datenbankLeeren(): Promise { const tabellen = await testPrisma.$queryRaw<{ tablename: string }[]>` SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tablename NOT LIKE '_prisma%' `; if (tabellen.length === 0) return; const liste = tabellen.map((t) => `"public"."${t.tablename}"`).join(", "); await testPrisma.$executeRawUnsafe(`TRUNCATE ${liste} RESTART IDENTITY CASCADE`); }