package model import ( "fmt" "io/ioutil" "gopkg.in/yaml.v2" ) const ( DefaultPort = 8080 ) type Config struct { DatabasePath *string `yaml:"database_path"` Port *int `yaml:"port"` } func (c *Config) SetDefaults() { if c.Port == nil { c.Port = NewInt(DefaultPort) } } func (c *Config) IsValid() error { if c.DatabasePath == nil || *c.DatabasePath == "" { return fmt.Errorf("database_path cannot be empty") } if c.Port == nil || *c.Port == 0 { return fmt.Errorf("port cannot be empty") } return nil } func ReadConfig(path string) (*Config, error) { b, err := ioutil.ReadFile(path) if err != nil { return nil, err } var config Config if err := yaml.Unmarshal(b, &config); err != nil { return nil, err } return &config, nil }