-
-
This commit is contained in:
88
datasource/config/config.go
Normal file
88
datasource/config/config.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"gopkg.in/ini.v1"
|
||||
)
|
||||
|
||||
type DataSourceConfig struct {
|
||||
Port int
|
||||
DBPath string
|
||||
}
|
||||
|
||||
type RedisConfig struct {
|
||||
Host string
|
||||
Port int
|
||||
Password string
|
||||
}
|
||||
|
||||
func loadRequiredInt(sec *ini.Section, key string) (int, error) {
|
||||
val, err := sec.GetKey(key)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
res, err := val.Int()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func loadRequiredString(sec *ini.Section, key string) (string, error) {
|
||||
val, err := sec.GetKey(key)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
res := strings.TrimSpace(val.String())
|
||||
if res == "" {
|
||||
return "", fmt.Errorf("%s cannot be empty", key)
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func LoadDataSourceConfig(cfg *ini.File) (*DataSourceConfig, error) {
|
||||
sec, err := cfg.GetSection("data_source")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
port, err := loadRequiredInt(sec, "port")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
dbPath, err := loadRequiredString(sec, "db_path")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &DataSourceConfig{
|
||||
Port: port,
|
||||
DBPath: dbPath,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func LoadRedisConfig(cfg *ini.File) (*RedisConfig, error) {
|
||||
sec, err := cfg.GetSection("redis")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
host, err := loadRequiredString(sec, "host")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
port, err := loadRequiredInt(sec, "port")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &RedisConfig{
|
||||
Host: host,
|
||||
Port: port,
|
||||
Password: strings.TrimSpace(sec.Key("password").String()),
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user