41 lines
1.0 KiB
Go
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
|
|
}
|