You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
3.1 KiB
150 lines
3.1 KiB
package config |
|
|
|
import ( |
|
"sig-pub/pkg/zlog" |
|
|
|
"github.com/redis/go-redis/v9" |
|
clientv3 "go.etcd.io/etcd/client/v3" |
|
"gorm.io/driver/mysql" |
|
"gorm.io/driver/postgres" |
|
"gorm.io/gorm" |
|
"gorm.io/gorm/logger" |
|
) |
|
|
|
type Configuration struct { |
|
// App map[string]any |
|
Exchange ExchangeConf |
|
|
|
Grpc GrpcConfig |
|
Etcd clientv3.Config |
|
// Consul api.Config |
|
Consul ConsulConfig |
|
Database Database |
|
Tsdb TsdbConfig |
|
} |
|
|
|
type GrpcConfig struct { |
|
Log bool |
|
Address string |
|
MaxSendMsgSize string |
|
MaxRecvMsgSize string |
|
ReadBufferSize string |
|
WriteBufferSize string |
|
keepalive GrpcKeepalive |
|
} |
|
|
|
type GrpcKeepalive struct { |
|
IdleTimeout string |
|
ForceCloseWait string |
|
KeepAliveInterval string |
|
KeepAliveTimeout string |
|
MaxLifeTime string |
|
} |
|
|
|
type ConsulConfig struct { |
|
Address string |
|
} |
|
|
|
// ============== Gate ============== |
|
type GateConf struct { |
|
HttpAddr string |
|
WsAddr string |
|
} |
|
|
|
// ============== database ============== |
|
type Database struct { |
|
Mysql MysqlConfig |
|
Postgres PostgresConfig |
|
Clickhouse ClickhouseConfig |
|
Kvrocks redis.Options |
|
} |
|
|
|
type MysqlConfig struct { |
|
LogMode string // silent error warn info |
|
gorm.Config |
|
Mysql mysql.Config |
|
} |
|
|
|
func (conf MysqlConfig) NewGormDB() (db *gorm.DB, err error) { |
|
logLevel := logger.Silent |
|
switch conf.LogMode { |
|
default: |
|
zlog.Errorf("unknow mysql gorm logmode: %s", conf.LogMode) |
|
case "": |
|
case "silent": |
|
logLevel = logger.Silent |
|
case "error": |
|
logLevel = logger.Error |
|
case "warn": |
|
logLevel = logger.Warn |
|
case "info": |
|
logLevel = logger.Info |
|
} |
|
conf.Logger = logger.Default.LogMode(logLevel) |
|
|
|
db, err = gorm.Open(mysql.New(conf.Mysql), &conf) |
|
return |
|
} |
|
|
|
type PostgresConfig struct { |
|
LogMode string // silent error warn info |
|
gorm.Config |
|
Postgres postgres.Config |
|
} |
|
|
|
func (conf PostgresConfig) NewGormDB() (db *gorm.DB, err error) { |
|
logLevel := logger.Silent |
|
switch conf.LogMode { |
|
default: |
|
zlog.Errorf("unknow mysql gorm logmode: %s", conf.LogMode) |
|
case "": |
|
case "silent": |
|
logLevel = logger.Silent |
|
case "error": |
|
logLevel = logger.Error |
|
case "warn": |
|
logLevel = logger.Warn |
|
case "info": |
|
logLevel = logger.Info |
|
} |
|
conf.Logger = logger.Default.LogMode(logLevel) |
|
db, err = gorm.Open(postgres.New(conf.Postgres), &conf) |
|
return |
|
} |
|
|
|
type ClickhouseConfig struct { |
|
Logsql bool |
|
Addr string |
|
Database string |
|
Username string |
|
Password string |
|
DialTimeout int // second |
|
ReadTimeout int // second |
|
NotAutoMigrateTable bool |
|
DsnParams map[string]any |
|
} |
|
|
|
// ============== tsdb ============== |
|
type TsdbConfig struct { |
|
Active string |
|
Victoriametrics VictoriaMetricsConfig |
|
} |
|
|
|
type VictoriaMetricsConfig struct { |
|
Addr string |
|
} |
|
|
|
// ============== exchange ============== |
|
type ExchangeConf struct { |
|
Okx OkxExchange |
|
} |
|
type OkxExchange struct { |
|
ApiKey string |
|
SecretKey string |
|
Passphrase string |
|
ReceiveBuffer int |
|
MarketSubscribeLimit int |
|
ConsumeBatch int // 订阅 channel 单次处理消息数量 |
|
ConsumeLater int // 毫秒,时间到达later或者数据累计到batch触发consume |
|
HttpProxy string |
|
}
|
|
|