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 AMapSecurityCode string AMapServiceHost 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"), AMapSecurityCode: os.Getenv("AMAP_SECURITY_JS_CODE"), AMapServiceHost: os.Getenv("AMAP_SECURITY_SERVICE_HOST"), } } 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 }