31 lines
999 B
JavaScript
31 lines
999 B
JavaScript
/**
|
|
* Downgrades the configured database (from `.env`) to a target schema version.
|
|
*
|
|
* npm run downgrade -- <targetVersion>
|
|
*
|
|
* Uses libdashstore's `src/providers/<provider>/downgrade/<from>_to_<to>.js`.
|
|
* Stop the API first; starting it again upgrades back to the latest version.
|
|
*/
|
|
import { createProvider } from '../src/db/provider.js';
|
|
import env from '../src/config/env.js';
|
|
|
|
const [rawTarget] = process.argv.slice(2);
|
|
const target = Number(rawTarget);
|
|
if (!rawTarget || !Number.isInteger(target) || target < 1) {
|
|
console.error('Usage: npm run downgrade -- <targetVersion>');
|
|
process.exit(1);
|
|
}
|
|
|
|
const provider = createProvider();
|
|
try {
|
|
const before = await provider.getSchemaVersion();
|
|
const steps = await provider.downgradeSchema(target);
|
|
console.log(`Schema ${env.dbProvider}: ${before} -> ${target} (${steps} step(s))`);
|
|
} catch (err) {
|
|
console.error(`Downgrade failed: ${err.message}`);
|
|
process.exitCode = 1;
|
|
} finally {
|
|
await provider.close();
|
|
}
|
|
|