54 lines
889 B
Go
54 lines
889 B
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
type Config struct {
|
|
HTTPHost string
|
|
HTTPPort int
|
|
DatabaseURL string
|
|
MigrateOnStart bool
|
|
}
|
|
|
|
func Load() Config {
|
|
return Config{
|
|
HTTPHost: envString("HTTP_HOST", "0.0.0.0"),
|
|
HTTPPort: envInt("HTTP_PORT", 8080),
|
|
DatabaseURL: envString("DATABASE_URL", ""),
|
|
MigrateOnStart: envBool("MIGRATE_ON_START", true),
|
|
}
|
|
}
|
|
|
|
func envString(key, fallback string) string {
|
|
if v := os.Getenv(key); v != "" {
|
|
return v
|
|
}
|
|
return fallback
|
|
}
|
|
|
|
func envInt(key string, fallback int) int {
|
|
raw := os.Getenv(key)
|
|
if raw == "" {
|
|
return fallback
|
|
}
|
|
v, err := strconv.Atoi(raw)
|
|
if err != nil {
|
|
return fallback
|
|
}
|
|
return v
|
|
}
|
|
|
|
func envBool(key string, fallback bool) bool {
|
|
raw := os.Getenv(key)
|
|
if raw == "" {
|
|
return fallback
|
|
}
|
|
v, err := strconv.ParseBool(raw)
|
|
if err != nil {
|
|
return fallback
|
|
}
|
|
return v
|
|
}
|