diff --git a/admin-compliance/app/api/sdk/v1/state/route.ts b/admin-compliance/app/api/sdk/v1/state/route.ts index 93b1b19..c13a06e 100644 --- a/admin-compliance/app/api/sdk/v1/state/route.ts +++ b/admin-compliance/app/api/sdk/v1/state/route.ts @@ -92,11 +92,17 @@ class PostgreSQLStateStore implements StateStore { private pool: Pool constructor(connectionString: string) { + // Strip sslmode from URL — pg driver overrides our ssl config if it's in the URL. + // We handle SSL ourselves via the ssl option below. + const cleanUrl = connectionString.replace(/[?&]sslmode=[^&]*/g, '').replace(/\?$/, '') + const needsSsl = connectionString.includes('sslmode=require') || connectionString.includes('sslmode=verify') this.pool = new Pool({ - connectionString, + connectionString: cleanUrl, max: 5, // Set search_path for compliance schema options: '-c search_path=compliance,core,public', + // Accept self-signed certificates (Hetzner PostgreSQL) + ssl: needsSsl ? { rejectUnauthorized: false } : false, }) }