Documentation
¶
Index ¶
- Constants
- Variables
- func GetBool(key string) bool
- func GetInt(key string) int
- func GetString(key string) string
- func GetStringMap(key string) map[string]any
- func GetViper() *viper.Viper
- func RegisterCallback(cb func(*Config))
- func RegisterDSNBuilder(name string, builder DSNBuilder, aliases ...string)
- func RegisteredDrivers() []string
- func Reload() error
- func Set(cfg *Config)
- func SetDefaultManager(m *Manager)
- func StartWatcher() error
- func StopWatcher()
- type AppConfig
- type CORSConfig
- type Config
- type DSNBuilder
- type DatabaseConfig
- type JWTConfig
- type LocalStorageConfig
- type LogConfig
- type Manager
- func (m *Manager) Get() *Config
- func (m *Manager) GetViper() *viper.Viper
- func (m *Manager) Load() (*Config, error)
- func (m *Manager) LoadWithWatch(onChange func(*Config)) (*Config, error)
- func (m *Manager) RegisterCallback(cb func(*Config))
- func (m *Manager) Reload() error
- func (m *Manager) Set(cfg *Config)
- func (m *Manager) StartWatcher() error
- func (m *Manager) StopWatcher()
- type OSSStorageConfig
- type RedisConfig
- type SMSConfig
- type ServerConfig
- type StorageConfig
- type UploadConfig
Constants ¶
const ( DriverMySQL = "mysql" DriverPostgres = "postgres" )
数据库驱动常量
Variables ¶
var (
ErrConfigNotLoaded = fmt.Errorf("配置未加载")
)
配置错误
Functions ¶
func RegisterDSNBuilder ¶
func RegisterDSNBuilder(name string, builder DSNBuilder, aliases ...string)
RegisterDSNBuilder 为指定驱动注册 DSN 构建器(驱动名大小写不敏感)。 aliases 用于注册同一驱动的别名,例如 postgres 的 "postgresql"、"pg"。 通常由 database 包通过 database.RegisterDialect 间接调用, 应用代码也可直接使用以扩展自定义驱动。
func RegisteredDrivers ¶
func RegisteredDrivers() []string
RegisteredDrivers 返回所有已注册 DSN 构建器的驱动名(用于诊断)
func SetDefaultManager ¶
func SetDefaultManager(m *Manager)
SetDefaultManager 替换全局默认配置管理器。 主要供应用层(如 App)在持有自己的 Manager 时使用, 使 config.Get / config.GetString 等便捷函数仍然能取到正确的配置。 传入 nil 表示重置为空管理器。
Types ¶
type AppConfig ¶
type AppConfig struct {
Name string `mapstructure:"name"` // 应用名称,如 "用户管理系统"
SiteName string `mapstructure:"site_name"` // 站点别名,如 "site_a"、"user_api"
Version string `mapstructure:"version"` // 应用版本
Env string `mapstructure:"env"` // 运行环境: dev/test/prod
Debug bool `mapstructure:"debug"` // 是否开启调试模式
BaseURL string `mapstructure:"base_url"` // 应用基础URL
TokenExpire int `mapstructure:"token_expire"` // Token过期时间(秒)
}
AppConfig 应用配置 使用场景:
- 缓存键名前缀: cache:{site_name}:user:1
- 日志标识: [site_a] 2024-01-01 10:00:00 ...
- 站点追踪: Request-ID 带站点标识
- 分布式锁: lock:{site_name}:order:123
func (*AppConfig) GetCachePrefix ¶
GetCachePrefix 获取缓存键名前缀
func (*AppConfig) GetSiteName ¶
GetSiteName 获取站点别名,如果未设置则返回空字符串
type CORSConfig ¶
type CORSConfig struct {
AllowedOrigins []string `mapstructure:"allowed_origins"` // 允许的域名列表
AllowedMethods []string `mapstructure:"allowed_methods"` // 允许的方法
AllowedHeaders []string `mapstructure:"allowed_headers"` // 允许的请求头
ExposedHeaders []string `mapstructure:"exposed_headers"` // 暴露的响应头
AllowCredentials bool `mapstructure:"allow_credentials"` // 是否允许携带凭证
MaxAge int `mapstructure:"max_age"` // 预检请求缓存时间(秒)
}
CORSConfig CORS 跨域配置
func (*CORSConfig) GetAllowedHeaders ¶
func (c *CORSConfig) GetAllowedHeaders() []string
GetAllowedHeaders 获取允许的请求头列表
func (*CORSConfig) GetAllowedMethods ¶
func (c *CORSConfig) GetAllowedMethods() []string
GetAllowedMethods 获取允许的方法列表
func (*CORSConfig) GetAllowedOrigins ¶
func (c *CORSConfig) GetAllowedOrigins() []string
GetAllowedOrigins 获取允许的域名列表
func (*CORSConfig) GetExposedHeaders ¶
func (c *CORSConfig) GetExposedHeaders() []string
GetExposedHeaders 获取暴露的响应头列表
type Config ¶
type Config struct {
App AppConfig `mapstructure:"app"`
Server ServerConfig `mapstructure:"server"`
Database DatabaseConfig `mapstructure:"database"`
Redis RedisConfig `mapstructure:"redis"`
JWT JWTConfig `mapstructure:"jwt"`
SMS SMSConfig `mapstructure:"sms"`
Storage StorageConfig `mapstructure:"storage"`
Upload UploadConfig `mapstructure:"upload"`
Log LogConfig `mapstructure:"log"`
CORS CORSConfig `mapstructure:"cors"`
}
Config 全局配置结构体
func LoadWithWatch ¶
LoadWithWatch 加载配置文件并启用热更新
type DSNBuilder ¶
type DSNBuilder func(*DatabaseConfig) string
DSNBuilder 根据 DatabaseConfig 生成连接字符串
func LookupDSNBuilder ¶
func LookupDSNBuilder(name string) (DSNBuilder, bool)
LookupDSNBuilder 查找已注册的 DSN 构建器
type DatabaseConfig ¶
type DatabaseConfig struct {
// Driver 数据库驱动,支持 mysql(默认)与 postgres
Driver string `mapstructure:"driver"`
// Host 数据库主机
Host string `mapstructure:"host"`
// Port 数据库端口
Port int `mapstructure:"port"`
// User 数据库用户名
User string `mapstructure:"user"`
// Password 数据库密码
Password string `mapstructure:"password"`
// Name 数据库名
Name string `mapstructure:"name"`
// CustomDSN 自定义连接字符串,设置后优先于由 Host/Port 等字段生成的 DSN
CustomDSN string `mapstructure:"dsn"`
// MaxIdleConns 最大空闲连接数
MaxIdleConns int `mapstructure:"max_idle_conns"`
// MaxOpenConns 最大打开连接数
MaxOpenConns int `mapstructure:"max_open_conns"`
}
DatabaseConfig 数据库配置
func (*DatabaseConfig) DSN ¶
func (c *DatabaseConfig) DSN() string
DSN 根据驱动返回连接字符串。设置了 CustomDSN 时优先返回 CustomDSN; 未指定 Driver 时按 MySQL 处理(向后兼容)。 若驱动通过 RegisterDSNBuilder 注册过自定义构建器,则使用注册的构建器。
func (*DatabaseConfig) MySQLDSN ¶
func (c *DatabaseConfig) MySQLDSN() string
MySQLDSN 返回 MySQL 连接字符串
func (*DatabaseConfig) PostgresDSN ¶
func (c *DatabaseConfig) PostgresDSN() string
PostgresDSN 返回 PostgreSQL 连接字符串
type JWTConfig ¶
type JWTConfig struct {
Secret string `mapstructure:"secret"`
Expire int `mapstructure:"expire"` // 过期时间(秒)
}
JWTConfig JWT 配置
type LocalStorageConfig ¶
type LocalStorageConfig struct {
Path string `mapstructure:"path"`
BaseURL string `mapstructure:"base_url"`
}
LocalStorageConfig 本地存储配置
type LogConfig ¶
type LogConfig struct {
Dir string `mapstructure:"dir"`
MaxSize int `mapstructure:"max_size"` // MB
MaxBackups int `mapstructure:"max_backups"`
MaxAge int `mapstructure:"max_age"` // 天
Compress bool `mapstructure:"compress"`
}
LogConfig 日志配置
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager 配置管理器
func (*Manager) LoadWithWatch ¶
LoadWithWatch 加载配置文件并启用热更新
func (*Manager) RegisterCallback ¶
RegisterCallback 注册配置变更回调
type OSSStorageConfig ¶
type OSSStorageConfig struct {
Endpoint string `mapstructure:"endpoint"`
Bucket string `mapstructure:"bucket"`
AccessKeyID string `mapstructure:"access_key_id"`
AccessKeySecret string `mapstructure:"access_key_secret"`
BaseURL string `mapstructure:"base_url"`
}
OSSStorageConfig OSS 存储配置
type RedisConfig ¶
type RedisConfig struct {
Host string `mapstructure:"host"`
Port int `mapstructure:"port"`
Password string `mapstructure:"password"`
DB int `mapstructure:"db"`
}
RedisConfig Redis 配置
type SMSConfig ¶
type SMSConfig struct {
Enabled bool `mapstructure:"enabled"`
Provider string `mapstructure:"provider"`
AccessKeyID string `mapstructure:"access_key_id"`
AccessKeySecret string `mapstructure:"access_key_secret"`
SignName string `mapstructure:"sign_name"`
TemplateCode string `mapstructure:"template_code"`
}
SMSConfig 短信配置
type ServerConfig ¶
type ServerConfig struct {
Port int `mapstructure:"port"`
Mode string `mapstructure:"mode"` // development 或 production
}
ServerConfig 服务配置
type StorageConfig ¶
type StorageConfig struct {
Driver string `mapstructure:"driver"` // local 或 oss
Local LocalStorageConfig `mapstructure:"local"`
OSS OSSStorageConfig `mapstructure:"oss"`
}
StorageConfig 文件存储配置
type UploadConfig ¶
type UploadConfig struct {
MaxFileSize int `mapstructure:"max_file_size"` // 最大图片大小(MB)
MaxVideoSize int `mapstructure:"max_video_size"` // 最大视频大小(MB)
MaxAvatarSize int `mapstructure:"max_avatar_size"` // 最大头像大小(MB)
AllowedImageTypes []string `mapstructure:"allowed_image_types"` // 允许的图片 MIME 类型
AllowedVideoTypes []string `mapstructure:"allowed_video_types"` // 允许的视频 MIME 类型
}
UploadConfig 上传配置