50 lines
774 B
Go
50 lines
774 B
Go
|
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
|
||
|
}
|