Dependency injection, example .env, and config handling
This commit is contained in:
parent
dd5b381426
commit
31fc0856b8
12
app/app.go
Normal file
12
app/app.go
Normal file
@ -0,0 +1,12 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"GoWeb/config"
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
// App contains and supplies available configurations and connections
|
||||
type App struct {
|
||||
Config config.Configuration
|
||||
Db *sql.DB
|
||||
}
|
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
|
||||
}
|
16
env_example.json
Normal file
16
env_example.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"Db": {
|
||||
"DbIp": "127.0.0.1",
|
||||
"DbPort": "5432",
|
||||
"DbName": "database",
|
||||
"DbUser": "user",
|
||||
"DbPassword": "password"
|
||||
},
|
||||
"Listen": {
|
||||
"HttpIp": "127.0.0.1",
|
||||
"HttpPort": "8090"
|
||||
},
|
||||
"Template": {
|
||||
"BaseTemplateName": "templates/base.html"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user