Files
David Chen f9c40f05c3 -
-
2026-02-12 00:54:45 +08:00

89 lines
1.5 KiB
Go

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
}