| 29 | * Get database configuration from environment variables |
| 30 | */ |
| 31 | export function getDatabaseConfig(): DatabaseConfig | null { |
| 32 | const connectionString = |
| 33 | process.env.DATABASE_URL || process.env.DATABASE_PRIVATE_URL; |
| 34 | |
| 35 | if (!connectionString) { |
| 36 | return null; |
| 37 | } |
| 38 | |
| 39 | // SSL configuration |
| 40 | let ssl: boolean | { rejectUnauthorized: boolean } = false; |
| 41 | if (process.env.DATABASE_SSL === "true") { |
| 42 | // Allow explicit control via DATABASE_SSL_REJECT_UNAUTHORIZED |
| 43 | const rejectUnauthorized = |
| 44 | process.env.DATABASE_SSL_REJECT_UNAUTHORIZED !== "false"; |
| 45 | ssl = { rejectUnauthorized }; |
| 46 | } |
| 47 | |
| 48 | return { |
| 49 | connectionString, |
| 50 | ssl, |
| 51 | maxPoolSize: envInt("DATABASE_POOL_MAX", 20), |
| 52 | minPoolSize: envInt("DATABASE_POOL_MIN", 5), |
| 53 | connectionTimeoutMillis: envInt("DATABASE_CONNECTION_TIMEOUT_MS", 5000), |
| 54 | idleTimeoutMillis: envInt("DATABASE_IDLE_TIMEOUT_MS", 30000), |
| 55 | }; |
| 56 | } |