diff --git a/packages/api/src/data_source.ts b/packages/api/src/data_source.ts index c5c8e92bf..d18eda8f8 100644 --- a/packages/api/src/data_source.ts +++ b/packages/api/src/data_source.ts @@ -23,26 +23,27 @@ export const appDataSource = new DataSource({ max: env.pg.pool.max, idleTimeoutMillis: 10000, // 10 seconds }, - replication: env.pg.slave - ? { - // set the default destination for read queries as the master instance - defaultMode: 'master', - master: { - host: env.pg.host, - port: env.pg.port, - username: env.pg.userName, - password: env.pg.password, - database: env.pg.dbName, - }, - slaves: [ - { - host: env.pg.slave.host, - port: env.pg.slave.port, - username: env.pg.slave.userName, - password: env.pg.slave.password, - database: env.pg.slave.dbName, - }, - ], - } - : undefined, }) + +if (env.pg.replication) { + appDataSource.setOptions({ + replication: { + master: { + host: env.pg.host, + port: env.pg.port, + username: env.pg.userName, + password: env.pg.password, + database: env.pg.dbName, + }, + slaves: [ + { + host: env.pg.slave.host, + port: env.pg.slave.port, + username: env.pg.slave.userName, + password: env.pg.slave.password, + database: env.pg.slave.dbName, + }, + ], + }, + }) +} diff --git a/packages/api/src/util.ts b/packages/api/src/util.ts index 1742f1771..4e32d5406 100755 --- a/packages/api/src/util.ts +++ b/packages/api/src/util.ts @@ -19,7 +19,8 @@ export interface BackendEnv { pool: { max: number } - slave?: { + replication: boolean + slave: { host: string port: number userName: string @@ -186,6 +187,12 @@ const nullableEnvVars = [ 'NOTION_CLIENT_SECRET', 'NOTION_AUTH_URL', 'SCORE_API_URL', + 'PG_REPLICATION', + 'PG_SLAVE_HOST', + 'PG_SLAVE_PORT', + 'PG_SLAVE_USER', + 'PG_SLAVE_PASSWORD', + 'PG_SLAVE_DB', ] // Allow some vars to be null/empty const envParser = @@ -225,15 +232,14 @@ export function getEnv(): BackendEnv { pool: { max: parseInt(parse('PG_POOL_MAX'), 10), }, - slave: parse('PG_SLAVE_HOST') - ? { - host: parse('PG_SLAVE_HOST'), - port: parseInt(parse('PG_SLAVE_PORT'), 10), - userName: parse('PG_SLAVE_USER'), - password: parse('PG_SLAVE_PASSWORD'), - dbName: parse('PG_SLAVE_DB'), - } - : undefined, + replication: parse('PG_REPLICATION') === 'true', + slave: { + host: parse('PG_SLAVE_HOST'), + port: parseInt(parse('PG_SLAVE_PORT'), 10), + userName: parse('PG_SLAVE_USER'), + password: parse('PG_SLAVE_PASSWORD'), + dbName: parse('PG_SLAVE_DB'), + }, } const server = { jwtSecret: parse('JWT_SECRET'),