12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package config
- import (
- "fmt"
- "log"
- "gogs.baozhida.cn/zoie/OAuth-core/config"
- "gogs.baozhida.cn/zoie/OAuth-core/config/source"
- )
- var (
- ExtendConfig interface{}
- _cfg *Settings
- )
- // Settings 兼容原先的配置结构
- type Settings struct {
- Settings Config `yaml:"settings"`
- callbacks []func()
- }
- func (e *Settings) runCallback() {
- for i := range e.callbacks {
- e.callbacks[i]()
- }
- }
- func (e *Settings) OnChange() {
- e.init()
- log.Println("!!! config change and reload")
- }
- func (e *Settings) Init() {
- e.init()
- log.Println("!!! config init")
- }
- func (e *Settings) init() {
- e.Settings.Logger.Setup()
- e.Settings.multiDatabase()
- e.runCallback()
- }
- // Config 配置集合
- type Config struct {
- Application *Application `yaml:"application"`
- Ssl *Ssl `yaml:"ssl"`
- Logger *Logger `yaml:"logger"`
- Jwt *Jwt `yaml:"jwt"`
- Database *Database `yaml:"database"`
- Databases *map[string]*Database `yaml:"databases"`
- Gen *Gen `yaml:"gen"`
- Cache *Cache `yaml:"cache"`
- Queue *Queue `yaml:"queue"`
- Locker *Locker `yaml:"locker"`
- Extend interface{} `yaml:"extend"`
- }
- // 多db改造
- func (e *Config) multiDatabase() {
- if len(*e.Databases) == 0 {
- *e.Databases = map[string]*Database{
- "*": e.Database,
- }
- }
- }
- // Setup 载入配置文件
- func Setup(s source.Source,
- fs ...func()) {
- _cfg = &Settings{
- Settings: Config{
- Application: ApplicationConfig,
- Ssl: SslConfig,
- Logger: LoggerConfig,
- Jwt: JwtConfig,
- Database: DatabaseConfig,
- Databases: &DatabasesConfig,
- Gen: GenConfig,
- Cache: CacheConfig,
- Queue: QueueConfig,
- Locker: LockerConfig,
- Extend: ExtendConfig,
- },
- callbacks: fs,
- }
- var err error
- config.DefaultConfig, err = config.NewConfig(
- config.WithSource(s),
- config.WithEntity(_cfg),
- )
- if err != nil {
- log.Fatal(fmt.Sprintf("New config object fail: %s", err.Error()))
- }
- _cfg.Init()
- }
|