()
| 74 | } |
| 75 | |
| 76 | export function resolvePostgresPoolConfig() { |
| 77 | const ssl = resolveSslConfig(); |
| 78 | const url = (process.env.POSTGRES_URL || process.env.DATABASE_URL || '').trim(); |
| 79 | const sharedOptions = { |
| 80 | max: parseInt(process.env.POSTGRES_MAX_CONNECTIONS) || 20, |
| 81 | min: parseInt(process.env.POSTGRES_MIN_CONNECTIONS) || 2, |
| 82 | idleTimeoutMillis: parseInt(process.env.POSTGRES_IDLE_TIMEOUT) || 30000, |
| 83 | connectionTimeoutMillis: parseInt(process.env.POSTGRES_CONNECTION_TIMEOUT) || 10000, |
| 84 | application_name: 'titanbot', |
| 85 | statement_timeout: process.env.NODE_ENV === 'production' ? 30000 : 0, |
| 86 | keepalives: 1, |
| 87 | keepalives_idle: 30, |
| 88 | ssl, |
| 89 | }; |
| 90 | |
| 91 | if (url && url !== DEFAULT_POSTGRES_URL) { |
| 92 | return { connectionString: url, ...sharedOptions }; |
| 93 | } |
| 94 | |
| 95 | return { |
| 96 | host: process.env.POSTGRES_HOST || 'localhost', |
| 97 | port: parseInt(process.env.POSTGRES_PORT) || 5432, |
| 98 | database: process.env.POSTGRES_DB || 'titanbot', |
| 99 | user: process.env.POSTGRES_USER || 'postgres', |
| 100 | password: (process.env.POSTGRES_PASSWORD || '').toString(), |
| 101 | ...sharedOptions, |
| 102 | }; |
| 103 | } |
| 104 | |
| 105 | export const pgConfig = { |
| 106 | url: process.env.POSTGRES_URL || process.env.DATABASE_URL || DEFAULT_POSTGRES_URL, |
no test coverage detected