package config import ( "os" "strconv" "time" ) type Config struct { HTTPAddr string StaticDir string MySQLDSN string RedisAddr string RedisUsername string RedisPassword string RedisDB int TDengineDriver string TDengineDSN string TDengineDatabase string CapacityCheckBin string AuthToken string RequestTimeout time.Duration AMapWebJSKey string AMapAPIKey string AMapSecurityCode string AMapServiceHost string PlatformRelease string } func Load() Config { return Config{ HTTPAddr: env("HTTP_ADDR", ":20300"), StaticDir: env("STATIC_DIR", ""), MySQLDSN: os.Getenv("MYSQL_DSN"), RedisAddr: os.Getenv("REDIS_ADDR"), RedisUsername: os.Getenv("REDIS_USERNAME"), RedisPassword: os.Getenv("REDIS_PASSWORD"), RedisDB: envInt("REDIS_DB", 50), TDengineDriver: env("TDENGINE_DRIVER", "taosWS"), TDengineDSN: os.Getenv("TDENGINE_DSN"), TDengineDatabase: env("TDENGINE_DATABASE", "lingniu_vehicle_ts"), CapacityCheckBin: os.Getenv("CAPACITY_CHECK_BIN"), AuthToken: os.Getenv("AUTH_TOKEN"), RequestTimeout: time.Duration(envInt("REQUEST_TIMEOUT_MS", 5000)) * time.Millisecond, AMapWebJSKey: os.Getenv("AMAP_WEB_JS_KEY"), AMapAPIKey: os.Getenv("AMAP_API_KEY"), AMapSecurityCode: os.Getenv("AMAP_SECURITY_JS_CODE"), AMapServiceHost: os.Getenv("AMAP_SECURITY_SERVICE_HOST"), PlatformRelease: os.Getenv("PLATFORM_RELEASE"), } } func env(key, fallback string) string { if value := os.Getenv(key); value != "" { return value } return fallback } func envInt(key string, fallback int) int { raw := os.Getenv(key) if raw == "" { return fallback } value, err := strconv.Atoi(raw) if err != nil { return fallback } return value }