Newer
Older
safe-algo-pro / services / global_config.py
zhangyingjie on 7 Nov 2 KB 增加数据推送功能
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