gogmagog/config/config.go
2020-12-29 18:20:28 -06:00

71 lines
1.2 KiB
Go

package config
import (
"log"
"github.com/spf13/viper"
)
// AppConfig represents the config flags for the base application.
type AppConfig struct {
Environment string
Port string
Timezone string
}
// DBConfig is the config for the DB connection.
type DBConfig struct {
Type string
Host string
Port string
User string
Password string
Database string
}
// Conf represents the overall configuration of the application.
type Conf struct {
App AppConfig
Db DBConfig
}
func createDefaultConf() *Conf {
cnf := &Conf{
App: AppConfig{
Environment: "local",
Port: "8080",
Timezone: "America/New_York",
},
Db: DBConfig{
Type: "postgres",
Host: "localhost",
Port: "5432",
User: "<user>",
Password: "<password>",
Database: "gogmagog",
},
}
return cnf
}
// GetConf returns config values
func GetConf(filename string) (*Conf, error) {
cnf := createDefaultConf()
vv := viper.New()
vv.SetConfigName(filename)
vv.SetConfigType("yaml")
vv.AddConfigPath(".")
err := vv.ReadInConfig()
if err != nil {
log.Print("Could not load config file: \n", err)
return nil, err
}
vv.Unmarshal(&cnf)
return cnf, nil
}