Dependency injection, example .env, and config handling
This commit is contained in:
49
config/config.go
Normal file
49
config/config.go
Normal file
@ -0,0 +1,49 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
type Configuration struct {
|
||||
Db struct {
|
||||
Ip string `json:"DbIp"`
|
||||
Port string `json:"DbPort"`
|
||||
Name string `json:"DbName"`
|
||||
User string `json:"DbUser"`
|
||||
Password string `json:"DbPassword"`
|
||||
}
|
||||
|
||||
Listen struct {
|
||||
Ip string `json:"HttpIp"`
|
||||
Port string `json:"HttpPort"`
|
||||
}
|
||||
|
||||
Template struct {
|
||||
BaseName string `json:"BaseTemplateName"`
|
||||
}
|
||||
}
|
||||
|
||||
// LoadConfig loads and returns a configuration struct
|
||||
func LoadConfig() Configuration {
|
||||
c := flag.String("c", "env.json", "Path to the json configuration file")
|
||||
flag.Parse()
|
||||
file, err := os.Open(*c)
|
||||
if err != nil {
|
||||
log.Fatal("Unable to open config JSON file: ", err)
|
||||
}
|
||||
|
||||
defer file.Close()
|
||||
|
||||
// Decode json config file to Configuration struct named config
|
||||
decoder := json.NewDecoder(file)
|
||||
Config := Configuration{}
|
||||
err = decoder.Decode(&Config)
|
||||
if err != nil {
|
||||
log.Fatal("Unable to decode config JSON file: ", err)
|
||||
}
|
||||
|
||||
return Config
|
||||
}
|
Reference in New Issue
Block a user