From c30dcab6948358a43e062403ed1f0104fb832d33 Mon Sep 17 00:00:00 2001 From: Amin Latifi Date: Thu, 2 May 2024 20:13:34 +0000 Subject: [PATCH] Hotfix db improvements (#1523) (#1524) * add extra configurations for postgresql connections * add master and slave replication strategy for typeorm Co-authored-by: CarlosQ96 <92376054+CarlosQ96@users.noreply.github.com> --- src/orm.ts | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/orm.ts b/src/orm.ts index 025280b8b..c5fdcaf63 100644 --- a/src/orm.ts +++ b/src/orm.ts @@ -17,11 +17,25 @@ export class AppDataSource { AppDataSource.datasource = new DataSource({ schema: 'public', type: 'postgres', - database: config.get('TYPEORM_DATABASE_NAME') as string, - username: config.get('TYPEORM_DATABASE_USER') as string, - password: config.get('TYPEORM_DATABASE_PASSWORD') as string, - port: config.get('TYPEORM_DATABASE_PORT') as number, - host: config.get('TYPEORM_DATABASE_HOST') as string, + replication: { + master: { + database: config.get('TYPEORM_DATABASE_NAME') as string, + username: config.get('TYPEORM_DATABASE_USER') as string, + password: config.get('TYPEORM_DATABASE_PASSWORD') as string, + port: config.get('TYPEORM_DATABASE_PORT') as number, + host: config.get('TYPEORM_DATABASE_HOST') as string, + }, + slaves: [ + { + database: config.get('TYPEORM_DATABASE_NAME') as string, + username: config.get('TYPEORM_DATABASE_USER') as string, + password: config.get('TYPEORM_DATABASE_PASSWORD') as string, + port: config.get('TYPEORM_DATABASE_PORT') as number, + host: config.get('TYPEORM_DATABASE_HOST_READONLY') as string, + }, + ], + }, + entities, synchronize, dropSchema, @@ -35,6 +49,11 @@ export class AppDataSource { }, }, poolSize, + extra: { + maxWaitingClients: 10, + evictionRunIntervalMillis: 500, + idleTimeoutMillis: 500, + }, }); await AppDataSource.datasource.initialize(); } @@ -59,6 +78,11 @@ export class CronDataSource { entities: [CronJob], synchronize: false, dropSchema: false, + extra: { + maxWaitingClients: 10, + evictionRunIntervalMillis: 500, + idleTimeoutMillis: 500, + }, }); await CronDataSource.datasource.initialize(); }