feat: verschlüsselte Integrationseinstellungen, Haushaltsmitglieder mit Ersteller, Backup-Download
This commit is contained in:
1 parent
a1195223e0
commit
267f4fcf70
21 files changed
+724
-30
No files matched your search
+15
-2
@@ -2,19 +2,32 @@ import { getDb } from "./db";
|
||||
|
||||
/**
|
||||
* Stellt additive Schema-Änderungen sicher, ohne dass auf dem Server ein
|
||||
* separater `prisma migrate`-Lauf nötig ist. Idempotent: fehlende Spalten
|
||||
* werden genau einmal ergänzt, alles andere bleibt unangetastet.
|
||||
* separater `prisma migrate`-Lauf nötig ist. Idempotent: fehlende Tabellen
|
||||
* und Spalten werden genau einmal ergänzt, alles andere bleibt unangetastet.
|
||||
* Best-effort: Fehler werden geloggt, der Start läuft trotzdem weiter.
|
||||
*/
|
||||
export async function ensureSchema(): Promise<void> {
|
||||
try {
|
||||
const db = getDb();
|
||||
const tables = (await db.$queryRaw<{ name: string }[]>`SELECT name FROM sqlite_master WHERE type='table'`).map(
|
||||
(t) => t.name
|
||||
);
|
||||
if (!tables.includes("AppSetting")) {
|
||||
await db.$executeRaw`CREATE TABLE "AppSetting" ("key" TEXT NOT NULL PRIMARY KEY, "value" TEXT NOT NULL, "updatedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP)`;
|
||||
}
|
||||
if (!tables.includes("HouseholdMember")) {
|
||||
await db.$executeRaw`CREATE TABLE "HouseholdMember" ("id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "name" TEXT NOT NULL, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP)`;
|
||||
await db.$executeRaw`CREATE UNIQUE INDEX "HouseholdMember_name_key" ON "HouseholdMember"("name")`;
|
||||
}
|
||||
const cols = (await db.$queryRaw<{ name: string }[]>`SELECT name FROM pragma_table_info('Voucher')`).map(
|
||||
(c) => c.name
|
||||
);
|
||||
if (!cols.includes("providerDomain")) {
|
||||
await db.$executeRaw`ALTER TABLE "Voucher" ADD COLUMN "providerDomain" TEXT`;
|
||||
}
|
||||
if (!cols.includes("createdBy")) {
|
||||
await db.$executeRaw`ALTER TABLE "Voucher" ADD COLUMN "createdBy" TEXT`;
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("ensureSchema fehlgeschlagen (Start läuft weiter):", err);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user