41 lines
1.0 KiB
Go

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
}