mirror of
https://github.com/ctwj/urldb.git
synced 2025-11-25 03:15:04 +08:00
124 lines
3.5 KiB
Go
124 lines
3.5 KiB
Go
|
|
package config
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"sync"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
var (
|
|||
|
|
globalConfigManager *ConfigManager
|
|||
|
|
once sync.Once
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// SetGlobalConfigManager 设置全局配置管理器
|
|||
|
|
func SetGlobalConfigManager(cm *ConfigManager) {
|
|||
|
|
globalConfigManager = cm
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetGlobalConfigManager 获取全局配置管理器
|
|||
|
|
func GetGlobalConfigManager() *ConfigManager {
|
|||
|
|
return globalConfigManager
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetConfig 获取配置值(全局函数)
|
|||
|
|
func GetConfig(key string) (*ConfigItem, error) {
|
|||
|
|
if globalConfigManager == nil {
|
|||
|
|
return nil, ErrConfigManagerNotInitialized
|
|||
|
|
}
|
|||
|
|
return globalConfigManager.GetConfig(key)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetConfigValue 获取配置值(全局函数)
|
|||
|
|
func GetConfigValue(key string) (string, error) {
|
|||
|
|
if globalConfigManager == nil {
|
|||
|
|
return "", ErrConfigManagerNotInitialized
|
|||
|
|
}
|
|||
|
|
return globalConfigManager.GetConfigValue(key)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetConfigBool 获取布尔配置值(全局函数)
|
|||
|
|
func GetConfigBool(key string) (bool, error) {
|
|||
|
|
if globalConfigManager == nil {
|
|||
|
|
return false, ErrConfigManagerNotInitialized
|
|||
|
|
}
|
|||
|
|
return globalConfigManager.GetConfigBool(key)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetConfigInt 获取整数配置值(全局函数)
|
|||
|
|
func GetConfigInt(key string) (int, error) {
|
|||
|
|
if globalConfigManager == nil {
|
|||
|
|
return 0, ErrConfigManagerNotInitialized
|
|||
|
|
}
|
|||
|
|
return globalConfigManager.GetConfigInt(key)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetConfigInt64 获取64位整数配置值(全局函数)
|
|||
|
|
func GetConfigInt64(key string) (int64, error) {
|
|||
|
|
if globalConfigManager == nil {
|
|||
|
|
return 0, ErrConfigManagerNotInitialized
|
|||
|
|
}
|
|||
|
|
return globalConfigManager.GetConfigInt64(key)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetConfigFloat64 获取浮点数配置值(全局函数)
|
|||
|
|
func GetConfigFloat64(key string) (float64, error) {
|
|||
|
|
if globalConfigManager == nil {
|
|||
|
|
return 0, ErrConfigManagerNotInitialized
|
|||
|
|
}
|
|||
|
|
return globalConfigManager.GetConfigFloat64(key)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetConfig 设置配置值(全局函数)
|
|||
|
|
func SetConfig(key, value string) error {
|
|||
|
|
if globalConfigManager == nil {
|
|||
|
|
return ErrConfigManagerNotInitialized
|
|||
|
|
}
|
|||
|
|
return globalConfigManager.SetConfig(key, value)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SetConfigWithType 设置配置值(指定类型,全局函数)
|
|||
|
|
func SetConfigWithType(key, value, configType string) error {
|
|||
|
|
if globalConfigManager == nil {
|
|||
|
|
return ErrConfigManagerNotInitialized
|
|||
|
|
}
|
|||
|
|
return globalConfigManager.SetConfigWithType(key, value, configType)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetConfigWithEnvFallback 获取配置值(环境变量优先,全局函数)
|
|||
|
|
func GetConfigWithEnvFallback(configKey, envKey string) (string, error) {
|
|||
|
|
if globalConfigManager == nil {
|
|||
|
|
return "", ErrConfigManagerNotInitialized
|
|||
|
|
}
|
|||
|
|
return globalConfigManager.GetConfigWithEnvFallback(configKey, envKey)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetConfigIntWithEnvFallback 获取整数配置值(环境变量优先,全局函数)
|
|||
|
|
func GetConfigIntWithEnvFallback(configKey, envKey string) (int, error) {
|
|||
|
|
if globalConfigManager == nil {
|
|||
|
|
return 0, ErrConfigManagerNotInitialized
|
|||
|
|
}
|
|||
|
|
return globalConfigManager.GetConfigIntWithEnvFallback(configKey, envKey)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetConfigBoolWithEnvFallback 获取布尔配置值(环境变量优先,全局函数)
|
|||
|
|
func GetConfigBoolWithEnvFallback(configKey, envKey string) (bool, error) {
|
|||
|
|
if globalConfigManager == nil {
|
|||
|
|
return false, ErrConfigManagerNotInitialized
|
|||
|
|
}
|
|||
|
|
return globalConfigManager.GetConfigBoolWithEnvFallback(configKey, envKey)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ErrConfigManagerNotInitialized 配置管理器未初始化错误
|
|||
|
|
var ErrConfigManagerNotInitialized = &ConfigError{
|
|||
|
|
Code: "CONFIG_MANAGER_NOT_INITIALIZED",
|
|||
|
|
Message: "配置管理器未初始化",
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ConfigError 配置错误
|
|||
|
|
type ConfigError struct {
|
|||
|
|
Code string
|
|||
|
|
Message string
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func (e *ConfigError) Error() string {
|
|||
|
|
return e.Message
|
|||
|
|
}
|