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(); } }