19 lines
929 B
TypeScript
19 lines
929 B
TypeScript
import { Database } from 'bun:sqlite';
|
|
import { createBackup, latestBackupTime, type BackupConfig } from '../src/ops/backups';
|
|
|
|
const path = process.argv[2];
|
|
if (!path || !process.argv[3]) throw new Error('Expected database path and backup configuration');
|
|
const config = JSON.parse(process.argv[3]) as BackupConfig;
|
|
const latest = latestBackupTime(config);
|
|
if (latest && Date.now() - latest < config.intervalMs) console.log(JSON.stringify({ timestamp: latest, created: false }));
|
|
else {
|
|
// SQLite needs writable WAL bookkeeping when the first snapshot opens a cold database.
|
|
// Only snapshot SQL runs here; never create a missing source file.
|
|
const db = new Database(path, { readwrite: true, create: false, strict: true });
|
|
try {
|
|
db.exec('PRAGMA busy_timeout=5000');
|
|
createBackup(db, config);
|
|
console.log(JSON.stringify({ timestamp: latestBackupTime(config), created: true }));
|
|
} finally { db.close(); }
|
|
}
|