From 38f1421fff0e54cc95b61422575994e0e06c3fd3 Mon Sep 17 00:00:00 2001 From: XuJiacheng Date: Thu, 2 Apr 2026 14:07:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=95=B0=E6=8D=AE=E5=BA=93):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=95=B0=E6=8D=AE=E5=BA=93=E5=86=99=E5=85=A5=E5=BC=80?= =?UTF-8?q?=E5=85=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加 DB_WRITE_ENABLED 和 G5_DB_WRITE_ENABLED 环境变量配置 在数据库操作逻辑中增加写入开关检查 --- bls-onoffline-backend/.env | 4 ++++ bls-onoffline-backend/src/config/config.js | 2 ++ bls-onoffline-backend/src/index.js | 22 +++++++++++++--------- 3 files changed, 19 insertions(+), 9 deletions(-) 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 }); }));