40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import Database from "better-sqlite3";
|
|
import { DATABASE_VERSION, migrateDatabase } from "../src/shared/database";
|
|
import { logger } from "../src/logger";
|
|
import { config } from "../src/config";
|
|
|
|
const log = logger.child({ module: "scripts/migrate" });
|
|
|
|
async function runMigration() {
|
|
let targetVersion = Number(process.argv[2]) || undefined;
|
|
|
|
if (!targetVersion) {
|
|
log.info("Enter target version or leave empty to use the latest version.");
|
|
process.stdin.resume();
|
|
process.stdin.setEncoding("utf8");
|
|
const input = await new Promise<string>((resolve) => {
|
|
process.stdin.on("data", (text) => {
|
|
resolve((String(text) || "").trim());
|
|
});
|
|
});
|
|
process.stdin.pause();
|
|
targetVersion = Number(input);
|
|
if (!targetVersion) {
|
|
targetVersion = DATABASE_VERSION;
|
|
}
|
|
}
|
|
|
|
const db = new Database(config.sqliteDataPath, {
|
|
verbose: (msg, ...args) => log.debug({ args }, String(msg)),
|
|
});
|
|
|
|
const currentVersion = db.pragma("user_version", { simple: true });
|
|
log.info({ currentVersion, targetVersion }, "Running migrations.");
|
|
migrateDatabase(targetVersion, db);
|
|
}
|
|
|
|
runMigration().catch((error) => {
|
|
log.error(error, "Migration failed.");
|
|
process.exit(1);
|
|
});
|