19 lines
724 B
JavaScript
19 lines
724 B
JavaScript
import { mkdirSync } from "node:fs";
|
|
import path from "node:path";
|
|
import { backup, DatabaseSync } from "node:sqlite";
|
|
|
|
const dataDir = path.resolve(process.env.DATA_DIR ?? "data/runtime");
|
|
const backupDir = path.resolve(process.env.BACKUP_DIR ?? path.join(dataDir, "backups"));
|
|
const sourcePath = path.join(dataDir, "game.db");
|
|
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
const destinationPath = path.join(backupDir, `game-${stamp}.db`);
|
|
|
|
mkdirSync(backupDir, { recursive: true });
|
|
const database = new DatabaseSync(sourcePath, { readOnly: true });
|
|
try {
|
|
await backup(database, destinationPath);
|
|
console.log(`Healer Man database backup created: ${destinationPath}`);
|
|
} finally {
|
|
database.close();
|
|
}
|