-
Notifications
You must be signed in to change notification settings - Fork 0
/
settings.go
109 lines (95 loc) · 2.1 KB
/
settings.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package config
import (
"github.com/cpyun/gyopls-core/config/driver"
"github.com/cpyun/gyopls-core/config/driver/source"
"log"
)
var (
ExtendConfig interface{}
Settings *Config
//_cfg *settings
)
//type settings struct {
// prefix string // 前缀
// settings Config
// callbacks []func()
//}
//
//// 初始化
//func (e *settings) init() {
// // 配置日志
// e.settings.Logger.Setup()
// //配置多数据库
// e.settings.multiDatabase()
//
// // 调用回调函数
// e.runCallback()
//}
//
//// 回调函数
//func (e *settings) runCallback() {
// for _, callback := range e.callbacks {
// callback()
// }
//}
//
//// OnChange 修改配置
//func (e *settings) OnChange() {
// e.init()
// log.Println("!!! config change and reload")
//}
// Setup
// @description Setup 载入配置文件
// @auth cpYun 时间(2022/7/22 10:00 )
// @param s string "配置文件路径"
// @param fs func "回调函数"
// @return
func Setup(fs ...SetOptionFuc) {
var err error
Settings = &Config{
Application: ApplicationConfig,
Database: DatabaseConfig,
Databases: &DatabasesConfig,
Filesystem: FilesystemConfig,
Cache: CacheConfig,
Logger: LoggerConfig,
Queue: QueueConfig,
Locker: LockerConfig,
JWT: JwtConfig,
Casbin: CasbinConfig,
Extend: ExtendConfig,
}
for _, f := range fs {
f(&Settings.opts)
}
//
driver.DefaultConfig, err = driver.NewConfig(
driver.WithSource(Settings.opts.source...),
driver.WithEntity(Settings),
)
if err != nil {
log.Fatalln("new config object fail: ", err.Error())
}
Settings.init()
// 初始化配置
//_cfg = &settings{
// settings: *Settings,
// callbacks: fs,
//}
//_cfg.init()
}
type setOptions struct {
source []source.Source
callbacks []func()
}
type SetOptionFuc func(*setOptions)
func WithSource(s ...source.Source) SetOptionFuc {
return func(o *setOptions) {
o.source = append(o.source, s...)
}
}
func WithCallback(fs ...func()) SetOptionFuc {
return func(o *setOptions) {
o.callbacks = append(o.callbacks, fs...)
}
}