craban/model/config.go

50 lines
774 B
Go
Raw Normal View History

2021-09-11 23:06:03 +01:00
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
}