( config: IDatabaseConfig, maxPoolSize?: number, idleTimeoutMillis?: number, )
| 45 | const dbConnection: Record<string, DbConnection | undefined> = {} |
| 46 | |
| 47 | export const getDbConnection = async ( |
| 48 | config: IDatabaseConfig, |
| 49 | maxPoolSize?: number, |
| 50 | idleTimeoutMillis?: number, |
| 51 | ): Promise<DbConnection> => { |
| 52 | if (dbConnection[config.host]) { |
| 53 | return dbConnection[config.host] |
| 54 | } |
| 55 | |
| 56 | log.info( |
| 57 | { database: config.database, host: config.host, port: config.port }, |
| 58 | 'Connecting to database!', |
| 59 | ) |
| 60 | |
| 61 | const dbInstance = getDbInstance() |
| 62 | |
| 63 | dbConnection[config.host] = dbInstance({ |
| 64 | ...config, |
| 65 | max: maxPoolSize || 20, |
| 66 | idleTimeoutMillis: idleTimeoutMillis !== undefined ? idleTimeoutMillis : 10000, |
| 67 | // query_timeout: 30000, |
| 68 | application_name: process.env.SERVICE || 'unknown-app', |
| 69 | }) |
| 70 | |
| 71 | await dbConnection[config.host].connect() |
| 72 | |
| 73 | return dbConnection[config.host] |
| 74 | } |
no test coverage detected