37 lines
831 B
Go
37 lines
831 B
Go
package mongodb
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/go-kratos/kratos/v2/log"
|
|
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
|
|
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
|
)
|
|
|
|
// NewMongoClient 创建MongoDB客户端
|
|
func NewMongoClient(ctx context.Context, cfg *conf.Bootstrap, l *log.Helper) *mongo.Client {
|
|
if cfg.Data == nil || cfg.Data.Mongodb == nil {
|
|
l.Warn("Mongodb config is nil")
|
|
return nil
|
|
}
|
|
|
|
var opts []*options.ClientOptions
|
|
|
|
uri := fmt.Sprintf("mongodb://%s:%s@%s",
|
|
cfg.Data.Mongodb.Username, cfg.Data.Mongodb.Password, cfg.Data.Mongodb.Address,
|
|
)
|
|
opts = append(opts, options.Client().ApplyURI(uri))
|
|
|
|
cli, err := mongo.Connect(ctx, opts...)
|
|
if err != nil {
|
|
l.Fatalf("failed opening connection to mongodb: %v", err)
|
|
return nil
|
|
}
|
|
|
|
return cli
|
|
}
|