Add logging to tenant lock migration script

This commit is contained in:
2026-07-14 16:48:37 +02:00
parent bf9e397e51
commit 4c03a96cbe

View File

@@ -5,37 +5,60 @@ import { Pool } from "pg"
import { loadSecrets, secrets } from "../src/utils/secrets" 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() { async function run() {
let connectionString = process.env.DATABASE_URL let connectionString = process.env.DATABASE_URL
if (!connectionString) { if (!connectionString) {
logStep("DATABASE_URL nicht in process.env gefunden, lade Secrets")
await loadSecrets() await loadSecrets()
connectionString = secrets.DATABASE_URL connectionString = secrets.DATABASE_URL
} else {
logStep("DATABASE_URL aus process.env gefunden")
} }
if (!connectionString) { if (!connectionString) {
throw new Error("DATABASE_URL not configured") throw new Error("DATABASE_URL not configured")
} }
logStep(`Verbinde mit ${maskConnectionString(connectionString)}`)
const pool = new Pool({ const pool = new Pool({
connectionString, connectionString,
max: 1, max: 1,
connectionTimeoutMillis: 10000,
idleTimeoutMillis: 10000,
}) })
try { try {
const db = drizzle(pool) 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` await db.execute(sql`
ALTER TABLE "tenant_export_jobs" ALTER TABLE "tenant_export_jobs"
ADD COLUMN IF NOT EXISTS "operation" text DEFAULT 'export' NOT NULL, ADD COLUMN IF NOT EXISTS "operation" text DEFAULT 'export' NOT NULL,
ADD COLUMN IF NOT EXISTS "previous_tenant_locked" "locked_tenant"; ADD COLUMN IF NOT EXISTS "previous_tenant_locked" "locked_tenant";
`) `)
logStep("Erweitere tenants")
await db.execute(sql` await db.execute(sql`
ALTER TABLE "tenants" ALTER TABLE "tenants"
ADD COLUMN IF NOT EXISTS "locked_by_export_job_id" uuid; ADD COLUMN IF NOT EXISTS "locked_by_export_job_id" uuid;
`) `)
logStep("Prüfe Foreign Key")
await db.execute(sql` await db.execute(sql`
DO $$ DO $$
BEGIN BEGIN
@@ -54,10 +77,12 @@ async function run() {
END $$; END $$;
`) `)
logStep("Prüfe Drizzle-Schema")
await db.execute(sql` await db.execute(sql`
CREATE SCHEMA IF NOT EXISTS drizzle; CREATE SCHEMA IF NOT EXISTS drizzle;
`) `)
logStep("Prüfe Drizzle-Migrationstabelle")
await db.execute(sql` await db.execute(sql`
CREATE TABLE IF NOT EXISTS drizzle.__drizzle_migrations ( CREATE TABLE IF NOT EXISTS drizzle.__drizzle_migrations (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
@@ -66,6 +91,7 @@ async function run() {
); );
`) `)
logStep("Setze Drizzle-Journal auf 0055")
await db.execute(sql` await db.execute(sql`
INSERT INTO drizzle.__drizzle_migrations (hash, created_at) INSERT INTO drizzle.__drizzle_migrations (hash, created_at)
SELECT 'manual-0055_tenant_export_maintenance_lock', 1784021669805 SELECT 'manual-0055_tenant_export_maintenance_lock', 1784021669805
@@ -76,8 +102,10 @@ async function run() {
); );
`) `)
logStep("Fertig")
console.log("✅ Tenant export lock migration applied") console.log("✅ Tenant export lock migration applied")
} finally { } finally {
logStep("Schließe DB-Verbindung")
await pool.end() await pool.end()
} }
} }