template-monorepo/internal/library/mongo/option.go

35 lines
875 B
Go
Executable File

package mongo
import (
"reflect"
"github.com/shopspring/decimal"
"github.com/zeromicro/go-zero/core/stores/mon"
"go.mongodb.org/mongo-driver/v2/mongo/options"
)
// SetCustomDecimalType registers decimal.Decimal <-> BSON Decimal128 conversion.
func SetCustomDecimalType() mon.Option {
return mon.WithTypeCodec(mon.TypeCodec{
ValueType: reflect.TypeOf(decimal.Decimal{}),
Encoder: &MgoDecimal{},
Decoder: &MgoDecimal{},
})
}
// InitMongoOptions applies pool / compressor settings from Conf.
func InitMongoOptions(cfg Conf) mon.Option {
return func(opts *options.ClientOptions) {
if cfg.MaxPoolSize > 0 {
opts.SetMaxPoolSize(cfg.MaxPoolSize)
}
if cfg.MinPoolSize > 0 {
opts.SetMinPoolSize(cfg.MinPoolSize)
}
if cfg.MaxConnIdleTime > 0 {
opts.SetMaxConnIdleTime(cfg.MaxConnIdleTime)
}
opts.SetCompressors(defaultCompressors(cfg))
}
}