Dmitri 4565a728a5
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 3m38s
dependecy injection uber to the win
2026-04-20 21:28:36 +02:00

56 lines
978 B
Go

package config
import (
"fmt"
_ "github.com/joho/godotenv/autoload"
"log"
"os"
)
type Config struct {
AppEnv string
DbUrl string
ServerPort string
}
func Load() Config {
var dbUrl string
{
username := getEnv("DB_USERNAME")
password := getEnv("DB_PASSWORD")
name := getEnv("DB_NAME")
port := getEnv("DB_PORT")
host := getEnv("DB_HOST")
// postgres://admin:admin@localhost:5432/admin_db
dbUrl = fmt.Sprintf("postgres://%v:%v@%v:%v/%v?sslmode=disable", username, password, host, port, name)
}
appEnv := os.Getenv("APP_ENV") // development | production
if appEnv == "" {
appEnv = "development"
}
cfg := Config{
AppEnv: appEnv,
DbUrl: dbUrl,
ServerPort: "8080",
}
return cfg
}
func getEnv(key string) string {
v := os.Getenv(key)
if v == "" {
log.Fatalf("The env variable %v is not defined and the applciation can not operate without\n", key)
}
return v
}
func Provide() *Config {
cfg := Load()
return &cfg
}