Verify SQLite backups and restores

This commit is contained in:
2026-07-23 19:12:14 +02:00
parent 4d5eb22e66
commit 030f18aeb0
7 changed files with 205 additions and 22 deletions
-19
View File
@@ -1,19 +0,0 @@
const fs = require("node:fs");
const path = require("node:path");
const dataDir = path.resolve("data");
const source = path.join(dataDir, "leistungsbilanz.db");
if (!fs.existsSync(source)) {
console.error(`Database file not found: ${source}`);
process.exit(1);
}
const backupDir = path.join(dataDir, "backups");
fs.mkdirSync(backupDir, { recursive: true });
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const target = path.join(backupDir, `leistungsbilanz-${timestamp}.db`);
fs.copyFileSync(source, target);
console.log(`Backup created: ${target}`);
+27
View File
@@ -0,0 +1,27 @@
import path from "node:path";
import { createVerifiedDatabaseBackup } from "../src/db/database-backup.js";
const dataDirectory = path.resolve("data");
const source = path.join(dataDirectory, "leistungsbilanz.db");
const backupDirectory = path.join(dataDirectory, "backups");
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const destination = path.join(
backupDirectory,
`leistungsbilanz-${timestamp}.db`
);
async function run() {
const verification = await createVerifiedDatabaseBackup(source, destination);
console.log(`Backup created and verified: ${destination}`);
console.log(
`Integrity: ${verification.integrityCheck}; foreign-key violations: ${verification.foreignKeyViolations}`
);
}
run().catch((error) => {
console.error(
"Database backup failed:",
error instanceof Error ? error.message : error
);
process.exit(1);
});