diff --git a/bls-onoffline-backend/.env b/bls-onoffline-backend/.env index 78d14f4..6b737fa 100644 --- a/bls-onoffline-backend/.env +++ b/bls-onoffline-backend/.env @@ -50,6 +50,10 @@ REDIS_DB=15 REDIS_CONNECT_TIMEOUT_MS=5000 REDIS_PROJECT_NAME=bls-onoffline +# DB write switches +DB_WRITE_ENABLED=true +G5_DB_WRITE_ENABLED=true + # G5 room_status.moment sync # false: do not write room_status.room_status_moment_g5 G5_ROOM_STATUS_MOMENT_SYNC_ENABLED=false diff --git a/bls-onoffline-backend/src/config/config.js b/bls-onoffline-backend/src/config/config.js index 6569d8c..a283ba4 100644 --- a/bls-onoffline-backend/src/config/config.js +++ b/bls-onoffline-backend/src/config/config.js @@ -45,6 +45,7 @@ export const config = { } : undefined }, db: { + writeEnabled: parseBoolean(process.env.DB_WRITE_ENABLED, true), host: process.env.DB_HOST || process.env.POSTGRES_HOST || 'localhost', port: parseNumber(process.env.DB_PORT || process.env.POSTGRES_PORT, 5432), user: process.env.DB_USER || process.env.POSTGRES_USER || 'postgres', @@ -56,6 +57,7 @@ export const config = { table: process.env.DB_TABLE || 'onoffline_record' }, g5db: { + writeEnabled: parseBoolean(process.env.G5_DB_WRITE_ENABLED, true), enabled: !!process.env.POSTGRES_HOST_G5, roomStatusMomentSyncEnabled: parseBoolean(process.env.G5_ROOM_STATUS_MOMENT_SYNC_ENABLED, false), host: process.env.POSTGRES_HOST_G5, diff --git a/bls-onoffline-backend/src/index.js b/bls-onoffline-backend/src/index.js index 14b7ff7..f44d8f4 100644 --- a/bls-onoffline-backend/src/index.js +++ b/bls-onoffline-backend/src/index.js @@ -19,10 +19,12 @@ const bootstrap = async () => { port: config.db.port, user: config.db.user, database: config.db.database, - schema: config.db.schema + schema: config.db.schema, + writeEnabled: config.db.writeEnabled }, g5db: { enabled: config.g5db.enabled, + writeEnabled: config.g5db.writeEnabled, roomStatusMomentSyncEnabled: config.g5db.roomStatusMomentSyncEnabled }, kafka: { @@ -180,10 +182,11 @@ const bootstrap = async () => { const startedAt = Date.now(); while (true) { try { - const promises = [ - dbManager.insertRows({ schema: config.db.schema, table: config.db.table, rows }) - ]; - if (config.g5db.enabled) { + const promises = []; + if (config.db.writeEnabled) { + promises.push(dbManager.insertRows({ schema: config.db.schema, table: config.db.table, rows })); + } + if (config.g5db.writeEnabled && config.g5db.enabled) { promises.push(g5DbManager.insertRows({ schema: config.g5db.schema, table: config.g5db.table, rows }).catch(e => { logger.error('G5 Database insert failed but non-blocking', { error: e.message }); })); @@ -215,10 +218,11 @@ const bootstrap = async () => { const insertRowsOnce = async (rows) => { const startedAt = Date.now(); - const promises = [ - dbManager.insertRows({ schema: config.db.schema, table: config.db.table, rows }) - ]; - if (config.g5db.enabled) { + const promises = []; + if (config.db.writeEnabled) { + promises.push(dbManager.insertRows({ schema: config.db.schema, table: config.db.table, rows })); + } + if (config.g5db.writeEnabled && config.g5db.enabled) { promises.push(g5DbManager.insertRows({ schema: config.g5db.schema, table: config.g5db.table, rows }).catch(e => { logger.error('G5 Database insert failed in insertOnce', { error: e.message }); }));