18 lines
692 B
JavaScript
18 lines
692 B
JavaScript
import { mkdirSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
import { DatabaseSync } from "node:sqlite";
|
|
|
|
const dataDirectory = resolve(process.env.DATA_DIR ?? "data");
|
|
const backupDirectory = resolve(process.env.BACKUP_DIR ?? "backups");
|
|
const timestamp = new Date().toISOString().replaceAll(":", "-").replaceAll(".", "-");
|
|
const backupPath = resolve(backupDirectory, `game-${timestamp}.db`);
|
|
mkdirSync(backupDirectory, { recursive: true });
|
|
|
|
const database = new DatabaseSync(resolve(dataDirectory, "game.db"));
|
|
try {
|
|
database.exec(`VACUUM INTO '${backupPath.replaceAll("'", "''")}'`);
|
|
console.log(`SQLite backup created: ${backupPath}`);
|
|
} finally {
|
|
database.close();
|
|
}
|