36 lines
955 B
JavaScript
36 lines
955 B
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Restore an Oikos database backup from the CLI.
|
|
*
|
|
* Usage:
|
|
* node --import dotenv/config scripts/restore-backup.js /path/to/oikos-backup.db
|
|
*/
|
|
|
|
import path from 'node:path';
|
|
import fs from 'node:fs/promises';
|
|
import 'dotenv/config';
|
|
import { getPath, restoreFromFile } from '../server/db.js';
|
|
|
|
const backupPath = process.argv[2];
|
|
|
|
if (!backupPath) {
|
|
console.error('Usage: node --import dotenv/config scripts/restore-backup.js /path/to/oikos-backup.db');
|
|
process.exit(1);
|
|
}
|
|
|
|
const resolved = path.resolve(backupPath);
|
|
|
|
try {
|
|
await fs.access(resolved);
|
|
const result = await restoreFromFile(resolved);
|
|
console.log(`Restored ${resolved} into ${getPath()}. Schema v${result.schemaVersion}.`);
|
|
if (result.rollbackPath) {
|
|
console.log(`Previous database copy saved at ${result.rollbackPath}.`);
|
|
}
|
|
process.exit(0);
|
|
} catch (err) {
|
|
console.error(`Restore failed: ${err?.message || err}`);
|
|
process.exit(1);
|
|
}
|