Files
MAcode/tcs-iptv/internal/config/config.go
T

43 lines
1.4 KiB
Go

package config
import (
"os"
)
// Config 保存服务运行所需的通用配置。
// MVP 阶段从环境变量加载,缺省值适配本地开发。
type Config struct {
APIAddr string
ChainAddr string
HashAddr string
CatalogAddr string
PostgresDSN string
RedisAddr string
// ChainBackend 选择链实现:memory(纯内存)| pg(内存+PG镜像)| chainmaker(真实链,需 -tags chainmaker 构建)
ChainBackend string
// ChainMakerSDKConf ChainMaker Go SDK 配置文件路径(节点地址/TLS/组织证书),仅 chainmaker 后端使用
ChainMakerSDKConf string
}
func getEnv(key, def string) string {
if v := os.Getenv(key); v != "" {
return v
}
return def
}
// Load 从环境变量加载配置。
func Load() Config {
return Config{
APIAddr: getEnv("TCS_API_ADDR", ":8080"),
ChainAddr: getEnv("TCS_CHAIN_ADDR", ":8081"),
HashAddr: getEnv("TCS_HASH_ADDR", ":8082"),
CatalogAddr: getEnv("TCS_CATALOG_ADDR", ":8083"),
PostgresDSN: getEnv("TCS_POSTGRES_DSN", "postgres://postgres@localhost:5432/tcs_iptv?sslmode=disable"),
RedisAddr: getEnv("TCS_REDIS_ADDR", "localhost:6379"),
// 默认 pg:PG 可用则内存+镜像持久化,不可用自动回退内存(见 api-svc 装配)
ChainBackend: getEnv("TCS_CHAIN_BACKEND", "pg"),
ChainMakerSDKConf: getEnv("TCS_CHAINMAKER_SDK_CONF", "deploy/chainmaker/sdk_config.yml"),
}
}