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 } 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, } } 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 }