sk-matrix-project/backend/golang/matrix-middle-service/pkg/config/toml/config.go
Shikong c5c3633ac4 添加 数据源配置
数据源初始化
多数据源初步支持
2023-02-26 21:10:43 +08:00

72 lines
1.2 KiB
Go

package toml
import (
"github.com/pelletier/go-toml/v2"
"matrix-middle-service/pkg/config"
"os"
"path/filepath"
)
func GenerateConfig() error {
p, _ := filepath.Abs("./config.toml")
flag := os.O_RDWR
_, err := os.Stat(p)
exist := !os.IsNotExist(err)
if !exist {
f, err := os.OpenFile(p, flag|os.O_CREATE, 0644)
if err != nil {
return err
}
defer func() {
_ = f.Close()
}()
encoder := toml.NewEncoder(f)
encoder.SetIndentTables(true)
_ = encoder.Encode(config.DefaultConfig())
_ = f.Sync()
}
return nil
}
func LoadConfig() (*config.Conf, error) {
p, _ := filepath.Abs("./config.toml")
flag := os.O_RDWR
_, err := os.Stat(p)
exist := !os.IsNotExist(err)
if !exist {
f, err := os.OpenFile(p, flag|os.O_CREATE, 0644)
if err != nil {
return nil, err
}
defer func() {
_ = f.Close()
}()
encoder := toml.NewEncoder(f)
encoder.SetIndentTables(true)
_ = encoder.Encode(config.DefaultConfig())
_ = f.Sync()
}
f, err := os.OpenFile(p, flag, 0644)
if err != nil {
return nil, err
}
defer func() {
_ = f.Close()
}()
c := &config.Conf{}
decoder := toml.NewDecoder(f)
err = decoder.Decode(c)
if err != nil {
return nil, err
}
return c, nil
}