pink_fox/pink_fox_app/internal/app/config/config.go

45 lines
1010 B
Go

package config
import (
"fmt"
"gopkg.in/yaml.v3"
"os"
)
type DB struct {
Host string `yaml:"host"`
User string `yaml:"user"`
Password string `yaml:"password"`
Port string `yaml:"port"`
Database string `yaml:"database"`
}
type Config struct {
Port int `yaml:"port"`
Db DB `yaml:"db"`
LogFile string `yaml:"logFile"`
}
func LoadConfig(defaultConfig string, defaultPort int) (*Config, error) {
data, err := os.ReadFile(defaultConfig)
if err != nil {
return nil, fmt.Errorf("ошибка чтения файла конфига: %s", err)
}
var config Config
err = yaml.Unmarshal(data, &config)
if err != nil {
return nil, fmt.Errorf("не получилось распарсить конфиг: %s", err)
}
return setDefaultValue(&config, defaultPort), nil
}
func setDefaultValue(conf *Config, defaultPort int) *Config {
if conf.Port == 0 {
conf.Port = defaultPort
}
if conf.LogFile == "" {
conf.LogFile = "/var/log/pink_fox/app.log"
}
return conf
}