From 6bfb4c33429612f434a49e989c5c25b5c30348da Mon Sep 17 00:00:00 2001 From: Till Heidrich Date: Thu, 23 Jul 2026 14:43:12 +0000 Subject: [PATCH] fix: locate migrations via process.cwd() (was dist/migrations -> ENOENT); add .dockerignore --- .dockerignore | 7 +++++++ src/lib/db.ts | 12 ++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d2f89a8 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +.git +node_modules +dist +.astro +*.log +.env +# migrations/ + seeds/ NICHT ignorieren — werden zur Laufzeit gebraucht! diff --git a/src/lib/db.ts b/src/lib/db.ts index 60907ca..aac5079 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -1,5 +1,5 @@ import pg from 'pg'; -import { readFileSync, readdirSync } from 'node:fs'; +import { readFileSync, readdirSync, existsSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import { dirname, join } from 'node:path'; @@ -24,8 +24,16 @@ export async function one(text: string, params?: any[]): Promise { await pool.query(`CREATE TABLE IF NOT EXISTS schema_migrations ( name text PRIMARY KEY, applied_at timestamptz NOT NULL DEFAULT now())`); + // Migrationen liegen im Projektwurzel-Ordner (Container: /app/migrations). + // Nicht relativ zum kompilierten Modul (dist/server/chunks) suchen! const here = dirname(fileURLToPath(import.meta.url)); - const dir = join(here, '..', '..', 'migrations'); + const candidates = [ + join(process.cwd(), 'migrations'), + join(here, '..', '..', 'migrations'), + join(here, '..', '..', '..', 'migrations'), + ]; + const dir = candidates.find((d) => existsSync(d)); + if (!dir) throw new Error(`migrations-Verzeichnis nicht gefunden (geprüft: ${candidates.join(', ')})`); const files = readdirSync(dir).filter((f) => f.endsWith('.sql')).sort(); for (const file of files) { const done = await one('SELECT name FROM schema_migrations WHERE name=$1', [file]);