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.
 
 

146 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
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 OkxExchange struct {
ApiKey string
SecretKey string
Passphrase string
ReceiveBuffer int
MarketSubscribeLimit int
ConsumeBatch int // 订阅 channel 单次处理消息数量
ConsumeLater int // 毫秒,时间到达later或者数据累计到batch触发consume
HttpProxy string
}