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