From 3deddbc1b1e85bd5460ef8cd48e395f5f06c70ec Mon Sep 17 00:00:00 2001 From: NW Date: Thu, 25 Jun 2026 22:52:59 +0100 Subject: [PATCH] fix: make migrations idempotent, pass checkColumnExists to all migrations --- src/migrations/008_user_language.js | 5 ++--- src/migrations/009_user_language_set.js | 5 ++--- src/migrations/runner.js | 6 +----- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/migrations/008_user_language.js b/src/migrations/008_user_language.js index 8d8973d..b758e55 100644 --- a/src/migrations/008_user_language.js +++ b/src/migrations/008_user_language.js @@ -1,8 +1,7 @@ import logger from '../utils/logger.js'; -import { checkColumnExists } from './runner.js'; -export default async function migration008(db) { - if (await checkColumnExists(db, 'users', 'language')) { +export default async function migration008(db, checkColumnExists) { + if (await checkColumnExists('users', 'language')) { logger.info('Migration 008: language column already exists, skipping'); return; } diff --git a/src/migrations/009_user_language_set.js b/src/migrations/009_user_language_set.js index 9d386d6..d20be70 100644 --- a/src/migrations/009_user_language_set.js +++ b/src/migrations/009_user_language_set.js @@ -1,8 +1,7 @@ import logger from '../utils/logger.js'; -import { checkColumnExists } from './runner.js'; -export default async function migration009(db) { - if (await checkColumnExists(db, 'users', 'language_set')) { +export default async function migration009(db, checkColumnExists) { + if (await checkColumnExists('users', 'language_set')) { logger.info('Migration 009: language_set column already exists, skipping'); return; } diff --git a/src/migrations/runner.js b/src/migrations/runner.js index 616aed2..57e1521 100644 --- a/src/migrations/runner.js +++ b/src/migrations/runner.js @@ -48,11 +48,7 @@ export async function runMigrations() { for (let i = currentVersion; i < migrations.length; i++) { logger.info({ migration: i + 1, total: migrations.length }, 'Running migration'); - if (i === 1) { - await migrations[i](db, checkColumnExists); - } else { - await migrations[i](db); - } + await migrations[i](db, checkColumnExists); await db.runAsync( `INSERT OR REPLACE INTO _meta (key, value) VALUES ('schema_version', ?)`, [String(i + 1)]