35 lines
896 B
TypeScript
35 lines
896 B
TypeScript
import { Database } from "better-sqlite3";
|
|
import { migrateToV2 } from "./migrateToV2.js";
|
|
import { migrateToV3 } from "./migrateToV3.js";
|
|
|
|
const CURRENT_VERSION = 3;
|
|
|
|
function migrateTo(version: number, db: Database) {
|
|
switch (version) {
|
|
case 2:
|
|
migrateToV3(db);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function getVersion(db: Database): number {
|
|
const stmt = db.prepare(`SELECT value FROM config WHERE key = 'version';`);
|
|
const data = stmt.get() as { value: string };
|
|
const version = data.value;
|
|
return parseInt(version);
|
|
}
|
|
|
|
export function migrate(db: Database) {
|
|
const configTableExists =
|
|
db.prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name='config';`).get() !==
|
|
undefined;
|
|
if (!configTableExists) {
|
|
migrateToV2(db);
|
|
}
|
|
let databaseVersion = getVersion(db);
|
|
while (databaseVersion < CURRENT_VERSION) {
|
|
migrateTo(databaseVersion, db);
|
|
databaseVersion = getVersion(db);
|
|
}
|
|
}
|