package config import ( "fmt" "os" "time" ) type Config struct { DatabaseURL string BindHost string BridgeIdleTTL time.Duration HTTPAddr string LogLevel string } func Load() (Config, error) { cfg := Config{ DatabaseURL: os.Getenv("DATABASE_URL"), BindHost: envOr("BIND_HOST", "0.0.0.0"), BridgeIdleTTL: envDur("BRIDGE_IDLE_TTL", 1*time.Minute), HTTPAddr: envOr("HTTP_ADDR", ":8081"), LogLevel: envOr("LOG_LEVEL", "info"), } if cfg.DatabaseURL == "" { return cfg, fmt.Errorf("DATABASE_URL required") } return cfg, nil } func envOr(key, fallback string) string { if v := os.Getenv(key); v != "" { return v } return fallback } func envDur(key string, fallback time.Duration) time.Duration { v := os.Getenv(key) if v == "" { return fallback } d, err := time.ParseDuration(v) if err != nil { return fallback } return d }