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 }