pink_fox/application/inner/config/config.org.go

72 lines
1.4 KiB
Go

package config
import (
"gopkg.in/yaml.v3"
"os"
"pink_fox/packages/fw"
)
type Config struct {
Debug bool `yaml:"debug"`
LogFile string `yaml:"logFile"`
DB DB `yaml:"db"`
}
type DB struct {
Host string `yaml:"host"`
User string `yaml:"user"`
Password string `yaml:"password"`
Port string `yaml:"port"`
Database string `yaml:"database"`
Migrations string `yaml:"migrations"`
}
func LoadConfig(path string) (*Config, fw.Error) {
data, err := os.ReadFile(path)
if err != nil {
return nil, fw.Err(err)
}
var conf Config
err = yaml.Unmarshal(data, &conf)
if err != nil {
return nil, fw.Err(err)
}
return setDefaultValues(&conf), nil
}
func LoadTestConfig(path string) (*DB, fw.Error) {
data, err := os.ReadFile(path)
if err != nil {
return nil, fw.Err(err)
}
var db DB
err = yaml.Unmarshal(data, &db)
if err != nil {
return nil, fw.Err(err)
}
return &db, nil
}
func setDefaultValues(conf *Config) *Config {
if conf.LogFile == "" {
conf.LogFile = "/app/logs/errors.log"
}
return conf
}
func GetDatabaseConfig(path string) (*fw.DatabaseConfig, fw.Error) {
conf, err := LoadConfig(path)
if err != nil {
return nil, err.Tap()
}
return &fw.DatabaseConfig{
Host: conf.DB.Host,
User: conf.DB.User,
Password: conf.DB.Password,
Port: conf.DB.Port,
Database: conf.DB.Database,
Migrations: conf.DB.Migrations,
}, nil
}