- update mongo

master v1.0.40
李光春 2 years ago
parent 54ca833aa5
commit f1530064e9

@ -1,3 +1,3 @@
package dorm
const Version = "1.0.39"
const Version = "1.0.40"

@ -17,38 +17,43 @@ type MongoClientFun func() (*MongoClient, string)
// string 集合
type MongoClientCollectionFun func() (*MongoClient, string, string)
type ConfigMongoClient struct {
// MongoClientConfig 实例配置
type MongoClientConfig struct {
Dns string // 地址
Opts *options.ClientOptions
DatabaseName string // 库名
}
// MongoClient 实例
type MongoClient struct {
Db *mongo.Client // 驱动
config *ConfigMongoClient // 配置
db *mongo.Client // 驱动
configDatabaseName string // 库名
}
func NewMongoClient(config *ConfigMongoClient) (*MongoClient, error) {
// NewMongoClient 创建实例
func NewMongoClient(config *MongoClientConfig) (*MongoClient, error) {
var ctx = context.Background()
var err error
c := &MongoClient{config: config}
c := &MongoClient{}
c.configDatabaseName = config.DatabaseName
// 连接到MongoDB
if c.config.Dns != "" {
c.Db, err = mongo.Connect(ctx, options.Client().ApplyURI(c.config.Dns))
if config.Dns != "" {
c.db, err = mongo.Connect(ctx, options.Client().ApplyURI(config.Dns))
if err != nil {
return nil, errors.New(fmt.Sprintf("连接失败:%v", err))
}
} else {
c.Db, err = mongo.Connect(ctx, c.config.Opts)
c.db, err = mongo.Connect(ctx, config.Opts)
if err != nil {
return nil, errors.New(fmt.Sprintf("连接失败:%v", err))
}
}
// 检查连接
err = c.Db.Ping(ctx, nil)
err = c.db.Ping(ctx, nil)
if err != nil {
return nil, errors.New(fmt.Sprintf("检查连接失败:%v", err))
}
@ -58,5 +63,5 @@ func NewMongoClient(config *ConfigMongoClient) (*MongoClient, error) {
// Close 关闭
func (c *MongoClient) Close(ctx context.Context) error {
return c.Db.Disconnect(ctx)
return c.db.Disconnect(ctx)
}

@ -8,13 +8,17 @@ import (
)
type MongoCollectionOptions struct {
dbCollection *mongo.Collection // 集合
db *mongo.Client // 驱动
configDatabaseName string // 库名
dbCollection *mongo.Collection // 集合
}
// Collection 选择集合
func (cd *MongoDatabaseOptions) Collection(name string, opts ...*options.CollectionOptions) *MongoCollectionOptions {
return &MongoCollectionOptions{
dbCollection: cd.dbDatabase.Collection(name, opts...),
db: cd.db, // 驱动
configDatabaseName: cd.configDatabaseName, // 库名
dbCollection: cd.dbDatabase.Collection(name, opts...), // 集合
}
}

@ -8,13 +8,17 @@ import (
)
type MongoDatabaseOptions struct {
dbDatabase *mongo.Database // 数据库
db *mongo.Client // 驱动
configDatabaseName string // 库名
dbDatabase *mongo.Database // 数据库
}
// Database 选择数据库
func (c *MongoClient) Database(name string, opts ...*options.DatabaseOptions) *MongoDatabaseOptions {
return &MongoDatabaseOptions{
dbDatabase: c.Db.Database(name, opts...),
db: c.db, // 驱动
configDatabaseName: c.configDatabaseName, // 库名
dbDatabase: c.db.Database(name, opts...), // 数据库
}
}
@ -42,7 +46,7 @@ func (c *MongoClient) Model(value interface{}) *MongoCollectionOptions {
databaseName := methodValue.Call(nil)[0].String()
databaseOptions = c.Database(databaseName)
} else {
panic(NoConfigDatabaseName)
databaseOptions = c.Database(c.configDatabaseName)
}
if methodValue := val.MethodByName("CollectionName"); methodValue.IsValid() {

@ -4,5 +4,5 @@ import "go.mongodb.org/mongo-driver/mongo"
// GetDb 获取驱动
func (c *MongoClient) GetDb() *mongo.Client {
return c.Db
return c.db
}

@ -8,9 +8,10 @@ import (
)
type MongoSessionOptions struct {
Session mongo.SessionContext // 会话
Db *mongo.Client // 驱动
startSession mongo.Session // 开始会话
db *mongo.Client // 驱动
configDatabaseName string // 库名
startSession mongo.Session // 开始会话
Session mongo.SessionContext // 会话
}
// Begin 开始事务,会同时创建开始会话需要在退出时关闭会话
@ -18,10 +19,11 @@ func (c *MongoClient) Begin() (ms *MongoSessionOptions, err error) {
var ctx = context.Background()
ms.Db = c.Db
ms.db = c.db
ms.configDatabaseName = c.configDatabaseName
// 开始会话
ms.startSession, err = ms.Db.StartSession()
ms.startSession, err = ms.db.StartSession()
if err != nil {
return nil, errors.New(fmt.Sprintf("开始会话失败:%v", err))
}

@ -6,14 +6,18 @@ import (
)
type MongoSessionCollectionOptions struct {
session mongo.SessionContext // 会话
dbCollection *mongo.Collection // 集合
db *mongo.Client // 驱动
configDatabaseName string // 库名
session mongo.SessionContext // 会话
dbCollection *mongo.Collection // 集合
}
// Collection 选择集合
func (csd *MongoSessionDatabaseOptions) Collection(name string, opts ...*options.CollectionOptions) *MongoSessionCollectionOptions {
return &MongoSessionCollectionOptions{
session: csd.session, // 会话
dbCollection: csd.dbDatabase.Collection(name, opts...), // 集合
db: csd.db, // 驱动
configDatabaseName: csd.configDatabaseName, // 库名
session: csd.session, // 会话
dbCollection: csd.dbDatabase.Collection(name, opts...), // 集合
}
}

@ -7,15 +7,19 @@ import (
)
type MongoSessionDatabaseOptions struct {
session mongo.SessionContext // 会话
dbDatabase *mongo.Database // 数据库
db *mongo.Client // 驱动
configDatabaseName string // 库名
session mongo.SessionContext // 会话
dbDatabase *mongo.Database // 数据库
}
// Database 选择数据库
func (cs *MongoSessionOptions) Database(name string, opts ...*options.DatabaseOptions) *MongoSessionDatabaseOptions {
return &MongoSessionDatabaseOptions{
session: cs.Session, // 会话
dbDatabase: cs.Db.Database(name, opts...), // 数据库
db: cs.db, // 驱动
configDatabaseName: cs.configDatabaseName, // 库名
session: cs.Session, // 会话
dbDatabase: cs.db.Database(name, opts...), // 数据库
}
}
@ -33,7 +37,7 @@ func (cs *MongoSessionOptions) Model(value interface{}) *MongoSessionCollectionO
databaseName := methodValue.Call(nil)[0].String()
sessionDatabaseOptions = cs.Database(databaseName)
} else {
panic(NoConfigDatabaseName)
sessionDatabaseOptions = cs.Database(cs.configDatabaseName)
}
if methodValue := val.MethodByName("CollectionName"); methodValue.IsValid() {

Loading…
Cancel
Save