From af49497923ae41e085709ed54f16f2f446b073f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Guti=C3=A9rrez?= <35082514+alezmad@users.noreply.github.com> Date: Wed, 4 Feb 2026 01:00:21 +0100 Subject: [PATCH] Fix Coolify DB connection URL parsing for special chars in password Co-Authored-By: Claude Opus 4.5 --- src/lib/coolify-db.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/lib/coolify-db.ts b/src/lib/coolify-db.ts index ec4181f..3cdc362 100644 --- a/src/lib/coolify-db.ts +++ b/src/lib/coolify-db.ts @@ -6,10 +6,19 @@ const { Pool } = pg; let pool: pg.Pool | null = null; +function parseDbUrl(url: string): pg.PoolConfig { + // Manual parsing to handle special chars in password (/, =, etc.) + const match = url.match(/^postgres(?:ql)?:\/\/([^:]+):(.+)@([^:]+):(\d+)\/(.+)$/); + if (match) { + return { user: match[1], password: match[2], host: match[3], port: parseInt(match[4]), database: match[5] }; + } + return { connectionString: url }; +} + function getPool(): pg.Pool { if (!pool) { pool = new Pool({ - connectionString: serverConfig.coolifyDbUrl, + ...parseDbUrl(serverConfig.coolifyDbUrl), max: 3, idleTimeoutMillis: 30000, connectionTimeoutMillis: 5000,