fix: make migrations idempotent, pass checkColumnExists to all migrations

This commit is contained in:
NW
2026-06-25 22:52:59 +01:00
parent a8bf50df24
commit 3deddbc1b1
3 changed files with 5 additions and 11 deletions

View File

@@ -1,8 +1,7 @@
import logger from '../utils/logger.js'; import logger from '../utils/logger.js';
import { checkColumnExists } from './runner.js';
export default async function migration008(db) { export default async function migration008(db, checkColumnExists) {
if (await checkColumnExists(db, 'users', 'language')) { if (await checkColumnExists('users', 'language')) {
logger.info('Migration 008: language column already exists, skipping'); logger.info('Migration 008: language column already exists, skipping');
return; return;
} }

View File

@@ -1,8 +1,7 @@
import logger from '../utils/logger.js'; import logger from '../utils/logger.js';
import { checkColumnExists } from './runner.js';
export default async function migration009(db) { export default async function migration009(db, checkColumnExists) {
if (await checkColumnExists(db, 'users', 'language_set')) { if (await checkColumnExists('users', 'language_set')) {
logger.info('Migration 009: language_set column already exists, skipping'); logger.info('Migration 009: language_set column already exists, skipping');
return; return;
} }

View File

@@ -48,11 +48,7 @@ export async function runMigrations() {
for (let i = currentVersion; i < migrations.length; i++) { for (let i = currentVersion; i < migrations.length; i++) {
logger.info({ migration: i + 1, total: migrations.length }, 'Running migration'); logger.info({ migration: i + 1, total: migrations.length }, 'Running migration');
if (i === 1) { await migrations[i](db, checkColumnExists);
await migrations[i](db, checkColumnExists);
} else {
await migrations[i](db);
}
await db.runAsync( await db.runAsync(
`INSERT OR REPLACE INTO _meta (key, value) VALUES ('schema_version', ?)`, `INSERT OR REPLACE INTO _meta (key, value) VALUES ('schema_version', ?)`,
[String(i + 1)] [String(i + 1)]