From 4c03a96cbe3158a09b4c55a7783271f1bd5a4fc3 Mon Sep 17 00:00:00 2001 From: flfeders Date: Tue, 14 Jul 2026 16:48:37 +0200 Subject: [PATCH] Add logging to tenant lock migration script --- .../apply-tenant-export-lock-migration.ts | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/backend/scripts/apply-tenant-export-lock-migration.ts b/backend/scripts/apply-tenant-export-lock-migration.ts index 2104bb1..d9527ad 100644 --- a/backend/scripts/apply-tenant-export-lock-migration.ts +++ b/backend/scripts/apply-tenant-export-lock-migration.ts @@ -5,37 +5,60 @@ import { Pool } from "pg" import { loadSecrets, secrets } from "../src/utils/secrets" +const maskConnectionString = (value: string) => + value.replace(/:\/\/([^:@]+):([^@]+)@/, "://$1:***@") + +const logStep = (message: string) => { + console.log(`[tenant-lock-migration] ${message}`) +} + async function run() { let connectionString = process.env.DATABASE_URL if (!connectionString) { + logStep("DATABASE_URL nicht in process.env gefunden, lade Secrets") await loadSecrets() connectionString = secrets.DATABASE_URL + } else { + logStep("DATABASE_URL aus process.env gefunden") } if (!connectionString) { throw new Error("DATABASE_URL not configured") } + logStep(`Verbinde mit ${maskConnectionString(connectionString)}`) + const pool = new Pool({ connectionString, max: 1, + connectionTimeoutMillis: 10000, + idleTimeoutMillis: 10000, }) try { const db = drizzle(pool) + logStep("Teste DB-Verbindung") + await db.execute(sql`SELECT 1`) + + logStep("Setze Statement-Timeout") + await db.execute(sql`SET statement_timeout = '30s'`) + + logStep("Erweitere tenant_export_jobs") await db.execute(sql` ALTER TABLE "tenant_export_jobs" ADD COLUMN IF NOT EXISTS "operation" text DEFAULT 'export' NOT NULL, ADD COLUMN IF NOT EXISTS "previous_tenant_locked" "locked_tenant"; `) + logStep("Erweitere tenants") await db.execute(sql` ALTER TABLE "tenants" ADD COLUMN IF NOT EXISTS "locked_by_export_job_id" uuid; `) + logStep("Prüfe Foreign Key") await db.execute(sql` DO $$ BEGIN @@ -54,10 +77,12 @@ async function run() { END $$; `) + logStep("Prüfe Drizzle-Schema") await db.execute(sql` CREATE SCHEMA IF NOT EXISTS drizzle; `) + logStep("Prüfe Drizzle-Migrationstabelle") await db.execute(sql` CREATE TABLE IF NOT EXISTS drizzle.__drizzle_migrations ( id SERIAL PRIMARY KEY, @@ -66,6 +91,7 @@ async function run() { ); `) + logStep("Setze Drizzle-Journal auf 0055") await db.execute(sql` INSERT INTO drizzle.__drizzle_migrations (hash, created_at) SELECT 'manual-0055_tenant_export_maintenance_lock', 1784021669805 @@ -76,8 +102,10 @@ async function run() { ); `) + logStep("Fertig") console.log("✅ Tenant export lock migration applied") } finally { + logStep("Schließe DB-Verbindung") await pool.end() } }