Files
energy-frontend/internal/config/config.go
T
tkl d4c08467cb wip
Signed-off-by: Thomas Klaehn <tkl@blackfinn.de>
2026-04-30 09:13:47 +02:00

67 lines
1.1 KiB
Go

package config
import (
"os"
"strconv"
)
type Config struct {
Server ServerConfig
Auth AuthConfig
DB DBConfig
Charger ChargerConfig
}
type ServerConfig struct {
Port int
}
type AuthConfig struct {
Username string
Password string
Secret string
}
type DBConfig struct {
DSN string
}
type ChargerConfig struct {
Host string
}
func Load() *Config {
return &Config{
Server: ServerConfig{
Port: getEnvInt("ENERGY_PORT", 8080),
},
Auth: AuthConfig{
Username: getEnv("ENERGY_AUTH_USER", "admin"),
Password: getEnv("ENERGY_AUTH_PASSWORD", ""),
Secret: getEnv("ENERGY_AUTH_SECRET", "change-me-in-production"),
},
DB: DBConfig{
DSN: getEnv("ENERGY_DB_DSN", "postgres://energy:changeme@localhost:5433/energy"),
},
Charger: ChargerConfig{
Host: getEnv("ENERGY_CHARGER_HOST", ""),
},
}
}
func getEnv(key, fallback string) string {
if v := os.Getenv(key); v != "" {
return v
}
return fallback
}
func getEnvInt(key string, fallback int) int {
if v := os.Getenv(key); v != "" {
if i, err := strconv.Atoi(v); err == nil {
return i
}
}
return fallback
}