from common.consts import PUSH_TYPE from db.database import get_db from entity.push_config import PushConfig from services.push_config_service import PushConfigService class GlobalConfig: _instance = None def __new__(cls): if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance def __init__(self): if not hasattr(self, "initialized"): # 确保只初始化一次 self.initialized = True self.config_service = None self.gas_push_config = None self.algo_result_push_config = None self.alarm_push_config = None self.init_config() # 进行初始化 def init_config(self): # 初始化配置逻辑 with next(get_db()) as db: self.config_service = PushConfigService(db) self.set_gas_push_config(self.config_service.get_push_config(PUSH_TYPE.GAS)) self.set_algo_result_push_config(self.config_service.get_push_config(PUSH_TYPE.ALGO_RESULT)) self.set_alarm_push_config(self.config_service.get_push_config(PUSH_TYPE.ALARM)) self.config_service.register_change_callback(self.on_config_change) def on_config_change(self, config: PushConfig): if config.push_type == PUSH_TYPE.GAS: self.set_gas_push_config(config) elif config.push_type == PUSH_TYPE.ALGO_RESULT: self.set_algo_result_push_config(config) elif config.push_type == PUSH_TYPE.ALARM: self.set_alarm_push_config(config) def get_gas_push_config(self): """获取 gas_push_config 配置""" return self.gas_push_config def set_gas_push_config(self, config): """设置 gas_push_config 配置""" if config: self.gas_push_config = config def get_algo_result_push_config(self): """获取 algo_result_push_config 配置""" return self.algo_result_push_config def set_algo_result_push_config(self, config): """设置 algo_result_push_config 配置""" if config: self.algo_result_push_config = config def get_alarm_push_config(self): """获取 algo_result_push_config 配置""" return self.alarm_push_config def set_alarm_push_config(self, config): """设置 algo_result_push_config 配置""" if config: self.alarm_push_config = config