23 lines
674 B
TypeScript
23 lines
674 B
TypeScript
import { mkdir } from "node:fs/promises";
|
|||
|
|
import { dirname } from "node:path";
|
||
|
|
import { Database } from "bun:sqlite";
|
||
|
|
|
||
|
|
const source = process.env.DB_PATH || "./dev.sqlite";
|
||
|
|
const destination = Bun.argv[2];
|
||
|
|
if (!destination) {
|
||
|
|
console.error("Usage: bun scripts/backup.ts /path/to/new-backup.sqlite");
|
||
|
|
process.exit(1);
|
||
|
|
}
|
||
|
|
if (await Bun.file(destination).exists()) {
|
||
|
|
console.error(`Backup already exists: ${destination}`);
|
||
|
|
process.exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
await mkdir(dirname(destination), { recursive: true });
|
||
|
|
const db = new Database(source);
|
||
|
|
try {
|
||
|
|
db.query("VACUUM INTO ?").run(destination);
|
||
|
|
console.log(`SQLite backup written to ${destination}`);
|
||
|
|
} finally {
|
||
|
|
db.close();
|
||
|
|
}
|