package sysconfig import ( "bindbox-game/internal/pkg/logger" "bindbox-game/internal/repository/mysql" "context" "sync" ) var ( globalDynamicConfig *DynamicConfig initOnce sync.Once ) // InitGlobalDynamicConfig 初始化全局动态配置实例 // 应在 main.go 中数据库初始化后调用 func InitGlobalDynamicConfig(l logger.CustomLogger, db mysql.Repo) error { var initErr error initOnce.Do(func() { globalDynamicConfig = NewDynamicConfig(l, db) // 预加载所有配置 initErr = globalDynamicConfig.LoadAll(context.Background()) }) return initErr } // GetGlobalDynamicConfig 获取全局动态配置实例 // 如果未初始化则返回 nil func GetGlobalDynamicConfig() *DynamicConfig { return globalDynamicConfig } // MustGetGlobalDynamicConfig 获取全局动态配置实例 // 如果未初始化则 panic func MustGetGlobalDynamicConfig() *DynamicConfig { if globalDynamicConfig == nil { panic("动态配置服务未初始化,请先调用 InitGlobalDynamicConfig") } return globalDynamicConfig }