From 9f6e9ab3c39a916f8d9220bf46548bb63fe7b55f Mon Sep 17 00:00:00 2001 From: Bernd Storath <999999bst@gmail.com> Date: Fri, 27 Dec 2024 19:22:18 +0100 Subject: [PATCH] order safe data structure for migrations --- src/nuxt.config.ts | 1 + src/services/database/migrations/index.ts | 19 ++++++++----------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/nuxt.config.ts b/src/nuxt.config.ts index 2b300d41..b92cf157 100644 --- a/src/nuxt.config.ts +++ b/src/nuxt.config.ts @@ -27,6 +27,7 @@ export default defineNuxtConfig({ nitro: { esbuild: { options: { + // to support big int target: 'es2020', }, }, diff --git a/src/services/database/migrations/index.ts b/src/services/database/migrations/index.ts index 18406292..f1ef433e 100644 --- a/src/services/database/migrations/index.ts +++ b/src/services/database/migrations/index.ts @@ -4,10 +4,10 @@ import { run1 } from './1'; export type MIGRATION_FN = (db: Low) => Promise; -const MIGRATION_LIST = { +const MIGRATION_LIST = [ // Adds Initial Database Structure - '1': run1, -} satisfies Record; + { id: '1', fn: run1 }, +] satisfies { id: string; fn: MIGRATION_FN }[]; /** * Runs all migrations @@ -15,18 +15,15 @@ const MIGRATION_LIST = { */ export async function migrationRunner(db: Low) { const ranMigrations = db.data.migrations; - const runMigrations = Object.keys( - MIGRATION_LIST - ) as (keyof typeof MIGRATION_LIST)[]; - for (const migrationId of runMigrations) { - if (ranMigrations.includes(migrationId)) { + for (const migration of MIGRATION_LIST) { + if (ranMigrations.includes(migration.id)) { continue; } try { - await MIGRATION_LIST[migrationId](db); - db.data.migrations.push(migrationId); + await migration.fn(db); + db.data.migrations.push(migration.id); } catch (e) { - throw new Error(`Failed to run Migration ${migrationId}: ${e}`); + throw new Error(`Failed to run Migration ${migration.id}: ${e}`); } } await db.write();