Add logging to tenant lock migration script
This commit is contained in:
@@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user