u
This commit is contained in:
30
scripts/downgradeSchema.js
Normal file
30
scripts/downgradeSchema.js
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* 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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user