-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.go
62 lines (56 loc) · 1.58 KB
/
config.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
package sqlite3
import "time"
const (
ConnectorAttributeNameDSN = "DSN"
ConnectorAttributeNameMaxOpenConns = "MaxOpenConns"
ConnectorAttributeNameMaxIdleConns = "MaxMaxIdleConns"
ConnectorAttributeNameConnMaxLifetime = "ConnMaxLifetime"
ConnectorAttributeNameNumMaxRetries = "NumMaxRetries"
ConnectorAttributeNameQueueAttributesExpire = "QueueAttributesExpire"
DefaultNumMaxRetries = 3
DefaultQueueAttributesExpire = time.Minute
)
type Config struct {
DSN string
MaxOpenConns int
MaxIdleConns int
ConnMaxLifetime *time.Duration
NumMaxRetries *int
QueueAttributesExpire *time.Duration
}
func (v *Config) ApplyDefaultValues() {
if v.NumMaxRetries == nil {
i := DefaultNumMaxRetries
v.NumMaxRetries = &i
}
if v.QueueAttributesExpire == nil {
i := DefaultQueueAttributesExpire
v.QueueAttributesExpire = &i
}
}
func parseConfig(cfgMap map[string]interface{}) *Config {
var cfg Config
for k, v := range cfgMap {
switch k {
case ConnectorAttributeNameDSN:
s := v.(string)
cfg.DSN = s
case ConnectorAttributeNameMaxOpenConns:
s := v.(int)
cfg.MaxOpenConns = s
case ConnectorAttributeNameMaxIdleConns:
s := v.(int)
cfg.MaxIdleConns = s
case ConnectorAttributeNameConnMaxLifetime:
s := v.(time.Duration)
cfg.ConnMaxLifetime = &s
case ConnectorAttributeNameNumMaxRetries:
s := v.(int)
cfg.NumMaxRetries = &s
case ConnectorAttributeNameQueueAttributesExpire:
s := v.(time.Duration)
cfg.QueueAttributesExpire = &s
}
}
return &cfg
}