166f460d57
- internal/chain/chainmaker.go [//go:build chainmaker]: ChainMakerClient 适配器骨架, 实现 chain.Client 全部方法到合约 Invoke/Query,按角色证书做链上鉴权,错误映射回标准错误 - internal/chain/chainmaker_stub.go [//go:build !chainmaker]: 占位构造函数, 保证默认构建不依赖 SDK、主工程始终可编译 - contracts/tcs_registry/registry.go: 补齐合约方法 RegisterHashBinding/VerifyEpisodeHash/ListEpisodes/HashExists/RecordVersionChange/ RevokeEpisode/Restore/RestoreEpisode/SetContentStatus/QueryMappings/ListContents 并增加集级哈希/映射/版本计数索引 KV 设计 - config: TCS_CHAIN_BACKEND=memory|pg|chainmaker + TCS_CHAINMAKER_SDK_CONF 开关 - cmd/api-svc: newChain 按 backend 选择,chainmaker 失败逐级降级 pg 到内存 - internal/chain/conformance_test.go: chain.Client 契约测试套件,双实现共用 MemoryChain 默认跑;PersistentChain 经 TCS_TEST_PG_DSN;ChainMaker 经 -tags 与 env - 验证: 默认 build/vet/test 全绿;MemoryChain 与 PersistentChain 契约套件均通过,行为一致
41 lines
1.3 KiB
Go
41 lines
1.3 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
)
|
|
|
|
// Config 保存服务运行所需的通用配置。
|
|
// MVP 阶段从环境变量加载,缺省值适配本地开发。
|
|
type Config struct {
|
|
APIAddr string
|
|
ChainAddr string
|
|
HashAddr 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"),
|
|
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"),
|
|
}
|
|
}
|