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