44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package mdbc
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.mongodb.org/mongo-driver/bson/bsoncodec"
|
|
"go.mongodb.org/mongo-driver/mongo/readpref"
|
|
)
|
|
|
|
var std *ClientInit
|
|
|
|
// Config MongoDB连接配置
|
|
type Config struct {
|
|
// URI 连接DSN 格式: protocol://username:password@host:port/auth_db
|
|
URI string `yaml:"uri"`
|
|
// DBName
|
|
DBName string `yaml:"db-name"`
|
|
// MinPoolSize 连接池最小 默认1个
|
|
MinPoolSize uint64 `yaml:"min-pool-size"`
|
|
// MaxPoolSize 连接池最大 默认32
|
|
MaxPoolSize uint64 `yaml:"max-pool-size"`
|
|
// ConnTimeout 连接超时时间 单位秒 默认10秒
|
|
ConnTimeout uint64 `yaml:"conn-timeout"`
|
|
// RegistryBuilder 注册bson文档的自定义解析器 详见当前目录 codec.go 其中定义了一系列的bson文档解析器
|
|
RegistryBuilder *bsoncodec.RegistryBuilder
|
|
// ReadPreference 读配置
|
|
ReadPreference *readpref.ReadPref
|
|
}
|
|
|
|
func (c *Config) Init(ctx context.Context) error {
|
|
var err error
|
|
c.RegistryBuilder = RegisterTimestampCodec(nil)
|
|
std, err = ConnInit(c)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func GetClient() *ClientInit {
|
|
return std
|
|
}
|