From 0c37436a40e39b05bcf5c5d2c0b01c73533d2595 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Sat, 17 Sep 2022 10:49:42 +0800 Subject: [PATCH] - update mongo --- api_mongo.go | 125 +++++++---- const.go | 2 +- gin_mongo.go | 206 ++++++++++-------- go.mod | 4 +- go.sum | 8 +- .../go-playground/validator/v10/README.md | 2 +- .../go-playground/validator/v10/baked_in.go | 11 +- vendor/go.dtapp.net/dorm/const.go | 2 +- vendor/go.dtapp.net/dorm/gorm_postgresql.go | 2 +- vendor/go.dtapp.net/dorm/mongo.go | 26 +-- vendor/go.dtapp.net/dorm/mongo_bson.go | 1 - vendor/go.dtapp.net/dorm/mongo_collection.go | 56 +++++ .../dorm/mongo_collection_curd.go | 47 ++++ vendor/go.dtapp.net/dorm/mongo_curd.go | 185 ---------------- vendor/go.dtapp.net/dorm/mongo_curl_find.go | 15 -- .../go.dtapp.net/dorm/mongo_curl_find_many.go | 15 -- .../go.dtapp.net/dorm/mongo_curl_find_one.go | 11 - vendor/go.dtapp.net/dorm/mongo_database.go | 28 +++ vendor/go.dtapp.net/dorm/mongo_get.go | 10 - vendor/go.dtapp.net/dorm/mongo_options.go | 1 - vendor/go.dtapp.net/dorm/mongo_session.go | 50 +++++ .../dorm/mongo_session_collection.go | 19 ++ .../dorm/mongo_session_collection_curd.go | 46 ++++ .../dorm/mongo_session_database.go | 19 ++ vendor/go.dtapp.net/dorm/mongo_set.go | 28 --- vendor/go.dtapp.net/dorm/mongo_time.go | 71 ++++-- vendor/go.dtapp.net/dorm/mongo_transaction.go | 48 ---- .../dorm/mongo_transaction_curd.go | 174 --------------- .../dorm/mongo_transaction_get.go | 11 - .../dorm/mongo_transaction_set.go | 28 --- vendor/modules.txt | 4 +- 31 files changed, 542 insertions(+), 713 deletions(-) delete mode 100644 vendor/go.dtapp.net/dorm/mongo_bson.go create mode 100644 vendor/go.dtapp.net/dorm/mongo_collection.go create mode 100644 vendor/go.dtapp.net/dorm/mongo_collection_curd.go delete mode 100644 vendor/go.dtapp.net/dorm/mongo_curd.go delete mode 100644 vendor/go.dtapp.net/dorm/mongo_curl_find.go delete mode 100644 vendor/go.dtapp.net/dorm/mongo_curl_find_many.go delete mode 100644 vendor/go.dtapp.net/dorm/mongo_curl_find_one.go create mode 100644 vendor/go.dtapp.net/dorm/mongo_database.go delete mode 100644 vendor/go.dtapp.net/dorm/mongo_options.go create mode 100644 vendor/go.dtapp.net/dorm/mongo_session.go create mode 100644 vendor/go.dtapp.net/dorm/mongo_session_collection.go create mode 100644 vendor/go.dtapp.net/dorm/mongo_session_collection_curd.go create mode 100644 vendor/go.dtapp.net/dorm/mongo_session_database.go delete mode 100644 vendor/go.dtapp.net/dorm/mongo_set.go delete mode 100644 vendor/go.dtapp.net/dorm/mongo_transaction.go delete mode 100644 vendor/go.dtapp.net/dorm/mongo_transaction_curd.go delete mode 100644 vendor/go.dtapp.net/dorm/mongo_transaction_get.go delete mode 100644 vendor/go.dtapp.net/dorm/mongo_transaction_set.go diff --git a/api_mongo.go b/api_mongo.go index 7514a14..25704e1 100644 --- a/api_mongo.go +++ b/api_mongo.go @@ -22,7 +22,7 @@ type apiMongolLog struct { LogId primitive.ObjectID `json:"log_id,omitempty" bson:"_id,omitempty"` //【记录】编号 LogTime primitive.DateTime `json:"log_time,omitempty" bson:"log_time,omitempty"` //【记录】时间 TraceId string `json:"trace_id,omitempty" bson:"trace_id,omitempty"` //【记录】跟踪编号 - RequestTime string `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间 + RequestTime dorm.BsonTime `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间 RequestUri string `json:"request_uri,omitempty" bson:"request_uri,omitempty"` //【请求】链接 RequestUrl string `json:"request_url,omitempty" bson:"request_url,omitempty"` //【请求】链接 RequestApi string `json:"request_api,omitempty" bson:"request_api,omitempty"` //【请求】接口 @@ -34,7 +34,7 @@ type apiMongolLog struct { ResponseStatusCode int `json:"response_status_code,omitempty" bson:"response_status_code,omitempty"` //【返回】状态码 ResponseBody interface{} `json:"response_body,omitempty" bson:"response_body,omitempty"` //【返回】内容 ResponseContentLength int64 `json:"response_content_length,omitempty" bson:"response_content_length,omitempty"` //【返回】大小 - ResponseTime string `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间 + ResponseTime dorm.BsonTime `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间 SystemHostName string `json:"system_host_name,omitempty" bson:"system_host_name,omitempty"` //【系统】主机名 SystemInsideIp string `json:"system_inside_ip,omitempty" bson:"system_inside_ip,omitempty"` //【系统】内网ip SystemOs string `json:"system_os,omitempty" bson:"system_os,omitempty"` //【系统】系统类型 @@ -115,53 +115,84 @@ func (c *ApiClient) mongoCreateCollection(ctx context.Context) { "listCollections", 1, }}).Decode(&commandResult) if commandErr != nil { - c.zapLog.WithLogger().Sugar().Errorf("检查时间序列集合:%s", commandErr) + c.zapLog.WithTraceId(ctx).Sugar().Errorf("检查时间序列集合:%s", commandErr) } else { err := c.mongoClient.Db.Database(c.mongoConfig.databaseName).CreateCollection(ctx, c.mongoConfig.collectionName, options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField("log_time"))) if err != nil { - c.zapLog.WithLogger().Sugar().Errorf("创建时间序列集合:%s", err) + c.zapLog.WithTraceId(ctx).Sugar().Errorf("创建时间序列集合:%s", err) } } } // 创建索引 func (c *ApiClient) mongoCreateIndexes(ctx context.Context) { - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"trace_id", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"request_time", -1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"request_method", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"response_status_code", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"response_time", -1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"system_host_name", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"system_inside_ip", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"system_os", -1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"system_arch", -1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"system_cpu_quantity", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"go_version", -1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ - {"sdk_version", -1}, - }})) + indexes, err := c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).CreateManyIndexes(ctx, []mongo.IndexModel{ + { + Keys: bson.D{{ + Key: "trace_id", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "request_time", + Value: -1, + }}, + }, { + Keys: bson.D{{ + Key: "request_method", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "response_status_code", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "response_time", + Value: -1, + }}, + }, { + Keys: bson.D{{ + Key: "system_host_name", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "system_inside_ip", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "system_os", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "system_arch", + Value: -1, + }}, + }, { + Keys: bson.D{{ + Key: "system_cpu_quantity", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "go_version", + Value: -1, + }}, + }, { + Keys: bson.D{{ + Key: "sdk_version", + Value: -1, + }}, + }, + }) + if err != nil { + c.zapLog.WithTraceId(ctx).Sugar().Errorf("创建索引:%s", err) + } + c.zapLog.WithTraceId(ctx).Sugar().Infof("创建索引:%s", indexes) } // 记录日志 @@ -177,7 +208,7 @@ func (c *ApiClient) mongoRecord(ctx context.Context, mongoLog apiMongolLog) (err mongoLog.SystemCpuQuantity = c.config.maxProCs //【系统】CPU核数 mongoLog.LogId = primitive.NewObjectID() //【记录】编号 - _, err = c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).InsertOne(mongoLog) + _, err = c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).InsertOne(ctx, mongoLog) if err != nil { c.zapLog.WithTraceId(ctx).Sugar().Errorf("[golog.api.mongoRecord]:%s", err) } @@ -200,7 +231,7 @@ func (c *ApiClient) MongoDelete(ctx context.Context, hour int64) (*mongo.DeleteR func (c *ApiClient) MongoMiddleware(ctx context.Context, request gorequest.Response, sdkVersion string) { data := apiMongolLog{ LogTime: primitive.NewDateTimeFromTime(request.RequestTime), //【记录】时间 - RequestTime: gotime.SetCurrent(request.RequestTime).Bson(), //【请求】时间 + RequestTime: dorm.NewBsonTimeFromTime(request.RequestTime), //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接 RequestApi: gourl.UriParse(request.RequestUri).Path, //【请求】接口 @@ -210,7 +241,7 @@ func (c *ApiClient) MongoMiddleware(ctx context.Context, request gorequest.Respo ResponseHeader: request.ResponseHeader, //【返回】头部 ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 ResponseContentLength: request.ResponseContentLength, //【返回】大小 - ResponseTime: gotime.SetCurrent(request.ResponseTime).Bson(), //【返回】时间 + ResponseTime: dorm.NewBsonTimeFromTime(request.ResponseTime), //【返回】时间 SdkVersion: sdkVersion, //【程序】Sdk版本 } if request.ResponseHeader.Get("Content-Type") == "image/jpeg" || request.ResponseHeader.Get("Content-Type") == "image/png" || request.ResponseHeader.Get("Content-Type") == "image/jpg" { @@ -239,7 +270,7 @@ func (c *ApiClient) MongoMiddleware(ctx context.Context, request gorequest.Respo func (c *ApiClient) MongoMiddlewareXml(ctx context.Context, request gorequest.Response, sdkVersion string) { data := apiMongolLog{ LogTime: primitive.NewDateTimeFromTime(request.RequestTime), //【记录】时间 - RequestTime: gotime.SetCurrent(request.RequestTime).Bson(), //【请求】时间 + RequestTime: dorm.NewBsonTimeFromTime(request.RequestTime), //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接 RequestApi: gourl.UriParse(request.RequestUri).Path, //【请求】接口 @@ -249,7 +280,7 @@ func (c *ApiClient) MongoMiddlewareXml(ctx context.Context, request gorequest.Re ResponseHeader: request.ResponseHeader, //【返回】头部 ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 ResponseContentLength: request.ResponseContentLength, //【返回】大小 - ResponseTime: gotime.SetCurrent(request.ResponseTime).Bson(), //【返回】时间 + ResponseTime: dorm.NewBsonTimeFromTime(request.ResponseTime), //【返回】时间 SdkVersion: sdkVersion, //【程序】Sdk版本 } if request.ResponseHeader.Get("Content-Type") == "image/jpeg" || request.ResponseHeader.Get("Content-Type") == "image/png" || request.ResponseHeader.Get("Content-Type") == "image/jpg" { @@ -278,7 +309,7 @@ func (c *ApiClient) MongoMiddlewareXml(ctx context.Context, request gorequest.Re func (c *ApiClient) MongoMiddlewareCustom(ctx context.Context, api string, request gorequest.Response, sdkVersion string) { data := apiMongolLog{ LogTime: primitive.NewDateTimeFromTime(request.RequestTime), //【记录】时间 - RequestTime: gotime.SetCurrent(request.RequestTime).Bson(), //【请求】时间 + RequestTime: dorm.NewBsonTimeFromTime(request.RequestTime), //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接 RequestApi: api, //【请求】接口 @@ -288,7 +319,7 @@ func (c *ApiClient) MongoMiddlewareCustom(ctx context.Context, api string, reque ResponseHeader: request.ResponseHeader, //【返回】头部 ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 ResponseContentLength: request.ResponseContentLength, //【返回】大小 - ResponseTime: gotime.SetCurrent(request.ResponseTime).Bson(), //【返回】时间 + ResponseTime: dorm.NewBsonTimeFromTime(request.ResponseTime), //【返回】时间 SdkVersion: sdkVersion, //【程序】Sdk版本 } if request.ResponseHeader.Get("Content-Type") == "image/jpeg" || request.ResponseHeader.Get("Content-Type") == "image/png" || request.ResponseHeader.Get("Content-Type") == "image/jpg" { diff --git a/const.go b/const.go index 8fc25f8..3de75f4 100644 --- a/const.go +++ b/const.go @@ -1,5 +1,5 @@ package golog const ( - Version = "1.0.76" + Version = "1.0.77" ) diff --git a/gin_mongo.go b/gin_mongo.go index f712836..76f33b0 100644 --- a/gin_mongo.go +++ b/gin_mongo.go @@ -33,7 +33,7 @@ type ginMongoLog struct { LogId primitive.ObjectID `json:"log_id,omitempty" bson:"_id,omitempty"` //【记录】编号 LogTime primitive.DateTime `json:"log_time,omitempty" bson:"log_time,omitempty"` //【记录】时间 TraceId string `json:"trace_id,omitempty" bson:"trace_id,omitempty"` //【记录】跟踪编号 - RequestTime string `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间 + RequestTime dorm.BsonTime `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间 RequestUri string `json:"request_uri,omitempty" bson:"request_uri,omitempty"` //【请求】请求链接 域名+路径+参数 RequestUrl string `json:"request_url,omitempty" bson:"request_url,omitempty"` //【请求】请求链接 域名+路径 RequestApi string `json:"request_api,omitempty" bson:"request_api,omitempty"` //【请求】请求接口 路径 @@ -50,7 +50,7 @@ type ginMongoLog struct { RequestIpIsp string `json:"request_ip_isp,omitempty" bson:"request_ip_isp,omitempty"` //【请求】请求客户端运营商 RequestIpLocation ginMongoLogRequestIpLocationLocation `json:"request_ip_location,omitempty" bson:"request_ip_location,omitempty"` //【请求】请求客户端位置 RequestHeader interface{} `json:"request_header,omitempty" bson:"request_header,omitempty"` //【请求】请求头 - ResponseTime string `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间 + ResponseTime dorm.BsonTime `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间 ResponseCode int `json:"response_code,omitempty" bson:"response_code,omitempty"` //【返回】状态码 ResponseMsg string `json:"response_msg,omitempty" bson:"response_msg,omitempty"` //【返回】描述 ResponseData interface{} `json:"response_data,omitempty" bson:"response_data,omitempty"` //【返回】数据 @@ -131,97 +131,123 @@ func (c *GinClient) mongoCreateCollection(ctx context.Context) { "listCollections", 1, }}).Decode(&commandResult) if commandErr != nil { - c.zapLog.WithLogger().Sugar().Error("检查时间序列集合:", commandErr) + c.zapLog.WithTraceId(ctx).Sugar().Error("检查时间序列集合:", commandErr) } else { err := c.mongoClient.Db.Database(c.mongoConfig.databaseName).CreateCollection(ctx, c.mongoConfig.collectionName, options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField("log_time"))) if err != nil { - c.zapLog.WithLogger().Sugar().Error("创建时间序列集合:", err) + c.zapLog.WithTraceId(ctx).Sugar().Error("创建时间序列集合:", err) } } } // 创建索引 func (c *GinClient) mongoCreateIndexes(ctx context.Context) { - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"trace_id", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"request_time", -1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"request_method", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"request_proto", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"request_ip", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"request_ip_country", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"request_ip_province", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"request_ip_city", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"request_ip_isp", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"response_time", -1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"response_code", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"system_host_name", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"system_inside_ip", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"system_os", -1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"system_arch", -1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"system_cpu_quantity", 1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"go_version", -1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"sdk_version", -1}, - }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ - Keys: bson.D{ - {"request_ip_location", "2dsphere"}, - }})) + indexes, err := c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).CreateManyIndexes(ctx, []mongo.IndexModel{ + { + Keys: bson.D{{ + Key: "trace_id", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "request_time", + Value: -1, + }}, + }, { + Keys: bson.D{{ + Key: "request_method", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "request_proto", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "request_ip", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "request_ip_country", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "request_ip_province", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "request_ip_city", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "request_ip_isp", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "response_time", + Value: -1, + }}, + }, { + Keys: bson.D{{ + Key: "response_code", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "system_host_name", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "system_inside_ip", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "system_os", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "system_arch", + Value: -1, + }}, + }, { + Keys: bson.D{{ + Key: "system_cpu_quantity", + Value: 1, + }}, + }, { + Keys: bson.D{{ + Key: "go_version", + Value: -1, + }}, + }, { + Keys: bson.D{{ + Key: "sdk_version", + Value: -1, + }}, + }, { + Keys: bson.D{{ + Key: "request_ip_location", + Value: "2dsphere", + }}, + }, + }) + if err != nil { + c.zapLog.WithTraceId(ctx).Sugar().Errorf("创建索引:%s", err) + } + c.zapLog.WithTraceId(ctx).Sugar().Infof("创建索引:%s", indexes) } // 记录日志 -func (c *GinClient) mongoRecord(mongoLog ginMongoLog) (err error) { +func (c *GinClient) mongoRecord(ctx context.Context, mongoLog ginMongoLog) (err error) { mongoLog.SystemHostName = c.mongoConfig.hostname //【系统】主机名 mongoLog.SystemInsideIp = c.mongoConfig.insideIp //【系统】内网ip @@ -232,7 +258,7 @@ func (c *GinClient) mongoRecord(mongoLog ginMongoLog) (err error) { mongoLog.SystemCpuQuantity = c.config.maxProCs //【系统】CPU核数 mongoLog.LogId = primitive.NewObjectID() //【记录】编号 - _, err = c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).InsertOne(mongoLog) + _, err = c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).InsertOne(ctx, mongoLog) if err != nil { c.zapLog.WithTraceIdStr(mongoLog.TraceId).Sugar().Errorf("[golog.gin.mongoRecord]:%s", err) } @@ -242,6 +268,8 @@ func (c *GinClient) mongoRecord(mongoLog ginMongoLog) (err error) { func (c *GinClient) mongoRecordJson(ginCtx *gin.Context, traceId string, requestTime time.Time, requestBody []byte, responseCode int, responseBody string, startTime, endTime int64, clientIp, requestClientIpCountry, requestClientIpProvince, requestClientIpCity, requestClientIpIsp string, requestClientIpLocationLatitude, requestClientIpLocationLongitude float64) { + var ctx = gotrace_id.SetGinTraceIdContext(context.Background(), ginCtx) + if c.logDebug { c.zapLog.WithLogger().Sugar().Infof("[golog.gin.mongoRecordJson]收到保存数据要求:%s,%s", c.mongoConfig.databaseName, c.mongoConfig.collectionName) } @@ -249,7 +277,7 @@ func (c *GinClient) mongoRecordJson(ginCtx *gin.Context, traceId string, request data := ginMongoLog{ TraceId: traceId, //【记录】跟踪编号 LogTime: primitive.NewDateTimeFromTime(requestTime), //【记录】时间 - RequestTime: gotime.SetCurrent(requestTime).Bson(), //【请求】时间 + RequestTime: dorm.NewBsonTimeFromTime(requestTime), //【请求】时间 RequestUrl: ginCtx.Request.RequestURI, //【请求】请求链接 RequestApi: gourl.UriFilterExcludeQueryString(ginCtx.Request.RequestURI), //【请求】请求接口 RequestMethod: ginCtx.Request.Method, //【请求】请求方式 @@ -263,7 +291,7 @@ func (c *GinClient) mongoRecordJson(ginCtx *gin.Context, traceId string, request RequestIpCity: requestClientIpCity, //【请求】请求客户端城市 RequestIpIsp: requestClientIpIsp, //【请求】请求客户端运营商 RequestHeader: ginCtx.Request.Header, //【请求】请求头 - ResponseTime: gotime.Current().Bson(), //【返回】时间 + ResponseTime: dorm.NewBsonTimeCurrent(), //【返回】时间 ResponseCode: responseCode, //【返回】状态码 ResponseData: c.jsonUnmarshal(responseBody), //【返回】数据 CostTime: endTime - startTime, //【系统】花费时间 @@ -293,7 +321,7 @@ func (c *GinClient) mongoRecordJson(ginCtx *gin.Context, traceId string, request c.zapLog.WithTraceIdStr(traceId).Sugar().Infof("[golog.gin.mongoRecordJson.data]:%+v", data) } - err := c.mongoRecord(data) + err := c.mongoRecord(ctx, data) if err != nil { c.zapLog.WithTraceIdStr(traceId).Sugar().Errorf("[golog.gin.mongoRecordJson]:%s", err) } @@ -301,6 +329,8 @@ func (c *GinClient) mongoRecordJson(ginCtx *gin.Context, traceId string, request func (c *GinClient) mongoRecordXml(ginCtx *gin.Context, traceId string, requestTime time.Time, requestBody []byte, responseCode int, responseBody string, startTime, endTime int64, clientIp, requestClientIpCountry, requestClientIpProvince, requestClientIpCity, requestClientIpIsp string, requestClientIpLocationLatitude, requestClientIpLocationLongitude float64) { + var ctx = gotrace_id.SetGinTraceIdContext(context.Background(), ginCtx) + if c.logDebug { c.zapLog.WithLogger().Sugar().Infof("[golog.gin.mongoRecordXml]收到保存数据要求:%s,%s", c.mongoConfig.databaseName, c.mongoConfig.collectionName) } @@ -308,7 +338,7 @@ func (c *GinClient) mongoRecordXml(ginCtx *gin.Context, traceId string, requestT data := ginMongoLog{ TraceId: traceId, //【记录】跟踪编号 LogTime: primitive.NewDateTimeFromTime(requestTime), //【记录】时间 - RequestTime: gotime.SetCurrent(requestTime).Bson(), //【请求】时间 + RequestTime: dorm.NewBsonTimeFromTime(requestTime), //【请求】时间 RequestUrl: ginCtx.Request.RequestURI, //【请求】请求链接 RequestApi: gourl.UriFilterExcludeQueryString(ginCtx.Request.RequestURI), //【请求】请求接口 RequestMethod: ginCtx.Request.Method, //【请求】请求方式 @@ -322,7 +352,7 @@ func (c *GinClient) mongoRecordXml(ginCtx *gin.Context, traceId string, requestT RequestIpCity: requestClientIpCity, //【请求】请求客户端城市 RequestIpIsp: requestClientIpIsp, //【请求】请求客户端运营商 RequestHeader: ginCtx.Request.Header, //【请求】请求头 - ResponseTime: gotime.Current().Bson(), //【返回】时间 + ResponseTime: dorm.NewBsonTimeCurrent(), //【返回】时间 ResponseCode: responseCode, //【返回】状态码 ResponseData: c.jsonUnmarshal(responseBody), //【返回】数据 CostTime: endTime - startTime, //【系统】花费时间 @@ -352,7 +382,7 @@ func (c *GinClient) mongoRecordXml(ginCtx *gin.Context, traceId string, requestT c.zapLog.WithTraceIdStr(traceId).Sugar().Infof("[golog.gin.mongoRecordXml.data]:%+v", data) } - err := c.mongoRecord(data) + err := c.mongoRecord(ctx, data) if err != nil { c.zapLog.WithTraceIdStr(traceId).Sugar().Errorf("[golog.gin.mongoRecordXml]:%s", err) } diff --git a/go.mod b/go.mod index 0e323ec..aff678c 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.19 require ( github.com/gin-gonic/gin v1.8.1 github.com/natefinch/lumberjack v2.0.0+incompatible - go.dtapp.net/dorm v1.0.33 + go.dtapp.net/dorm v1.0.36 go.dtapp.net/goip v1.0.34 go.dtapp.net/gorequest v1.0.31 go.dtapp.net/gotime v1.0.5 @@ -24,7 +24,7 @@ require ( github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect - github.com/go-playground/validator/v10 v10.11.0 // indirect + github.com/go-playground/validator/v10 v10.11.1 // indirect github.com/go-redis/redis/v9 v9.0.0-beta.2 // indirect github.com/go-sql-driver/mysql v1.6.0 // indirect github.com/goccy/go-json v0.9.11 // indirect diff --git a/go.sum b/go.sum index b557368..41fa815 100644 --- a/go.sum +++ b/go.sum @@ -95,8 +95,8 @@ github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= -github.com/go-playground/validator/v10 v10.11.0 h1:0W+xRM511GY47Yy3bZUbJVitCNg2BOGlCyvTqsp/xIw= -github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= +github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= +github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-redis/redis/v9 v9.0.0-beta.2 h1:ZSr84TsnQyKMAg8gnV+oawuQezeJR11/09THcWCQzr4= github.com/go-redis/redis/v9 v9.0.0-beta.2/go.mod h1:Bldcd/M/bm9HbnNPi/LUtYBSD8ttcZYBMupwMXhdU0o= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -499,8 +499,8 @@ github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= -go.dtapp.net/dorm v1.0.33 h1:QRAVEQ6Uf3WENSOrXytzzH+PjH90JySowd3jbB9PQjw= -go.dtapp.net/dorm v1.0.33/go.mod h1:4WNSzrUGs7YIudq1cRZQNkHOlPAbG6thI3mXX1tQcYY= +go.dtapp.net/dorm v1.0.36 h1:3kqdGhZ/oAKr8YMQo9OXAlByGal+uok6Yh33YXmdJtw= +go.dtapp.net/dorm v1.0.36/go.mod h1:z9ksZ4Y0HHH0odjEiG57d90/ZUBM51qXEWJC8fS+dEM= go.dtapp.net/goip v1.0.34 h1:aW2CuPpQwcDOJiyx/gHbvrha3/x+poFRpDxsLtO4EVw= go.dtapp.net/goip v1.0.34/go.mod h1:EctL6B8ue/kZKPr+kKZPU6YTTpNhihane9BHHffwo6Q= go.dtapp.net/gorandom v1.0.1 h1:IWfMClh1ECPvyUjlqD7MwLq4mZdUusD1qAwAdsvEJBs= diff --git a/vendor/github.com/go-playground/validator/v10/README.md b/vendor/github.com/go-playground/validator/v10/README.md index 8b730b6..9d0a79e 100644 --- a/vendor/github.com/go-playground/validator/v10/README.md +++ b/vendor/github.com/go-playground/validator/v10/README.md @@ -1,7 +1,7 @@ Package validator ================= [![Join the chat at https://gitter.im/go-playground/validator](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/go-playground/validator?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -![Project status](https://img.shields.io/badge/version-10.11.0-green.svg) +![Project status](https://img.shields.io/badge/version-10.11.1-green.svg) [![Build Status](https://travis-ci.org/go-playground/validator.svg?branch=master)](https://travis-ci.org/go-playground/validator) [![Coverage Status](https://coveralls.io/repos/go-playground/validator/badge.svg?branch=master&service=github)](https://coveralls.io/github/go-playground/validator?branch=master) [![Go Report Card](https://goreportcard.com/badge/github.com/go-playground/validator)](https://goreportcard.com/report/github.com/go-playground/validator) diff --git a/vendor/github.com/go-playground/validator/v10/baked_in.go b/vendor/github.com/go-playground/validator/v10/baked_in.go index f2f0939..c9b1db4 100644 --- a/vendor/github.com/go-playground/validator/v10/baked_in.go +++ b/vendor/github.com/go-playground/validator/v10/baked_in.go @@ -1484,10 +1484,15 @@ func isAlphaUnicode(fl FieldLevel) bool { return alphaUnicodeRegex.MatchString(fl.Field().String()) } -// isBoolean is the validation function for validating if the current field's value can be safely converted to a boolean. +// isBoolean is the validation function for validating if the current field's value is a valid boolean value or can be safely converted to a boolean value. func isBoolean(fl FieldLevel) bool { - _, err := strconv.ParseBool(fl.Field().String()) - return err == nil + switch fl.Field().Kind() { + case reflect.Bool: + return true + default: + _, err := strconv.ParseBool(fl.Field().String()) + return err == nil + } } // isDefault is the opposite of required aka hasValue diff --git a/vendor/go.dtapp.net/dorm/const.go b/vendor/go.dtapp.net/dorm/const.go index af53090..6dd6b81 100644 --- a/vendor/go.dtapp.net/dorm/const.go +++ b/vendor/go.dtapp.net/dorm/const.go @@ -1,3 +1,3 @@ package dorm -const Version = "1.0.33" +const Version = "1.0.36" diff --git a/vendor/go.dtapp.net/dorm/gorm_postgresql.go b/vendor/go.dtapp.net/dorm/gorm_postgresql.go index 2fd10b4..a15149a 100644 --- a/vendor/go.dtapp.net/dorm/gorm_postgresql.go +++ b/vendor/go.dtapp.net/dorm/gorm_postgresql.go @@ -160,7 +160,7 @@ func NewGormPostgresqlClient(config *ConfigGormClient) (*GormClient, error) { // 设置了连接可复用的最大时间 if c.config.ConnSetConnMaxLifetime == 0 { - sqlDB.SetConnMaxLifetime(time.Second * 600) + sqlDB.SetConnMaxLifetime(time.Hour) } else { sqlDB.SetConnMaxLifetime(time.Duration(c.config.ConnSetConnMaxLifetime)) } diff --git a/vendor/go.dtapp.net/dorm/mongo.go b/vendor/go.dtapp.net/dorm/mongo.go index af8003f..1b33b36 100644 --- a/vendor/go.dtapp.net/dorm/mongo.go +++ b/vendor/go.dtapp.net/dorm/mongo.go @@ -4,7 +4,6 @@ import ( "context" "errors" "fmt" - "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) @@ -16,36 +15,31 @@ type ConfigMongoClient struct { } type MongoClient struct { - Db *mongo.Client // 驱动 - config *ConfigMongoClient // 配置 - databaseName string // 库名 - collectionName string // 表名 - //filterArr []queryFilter // 查询条件数组 - filter bson.D // 查询条件 + Db *mongo.Client // 驱动 + config *ConfigMongoClient // 配置 } func NewMongoClient(config *ConfigMongoClient) (*MongoClient, error) { + var ctx = context.Background() var err error c := &MongoClient{config: config} - c.databaseName = c.config.DatabaseName - // 连接到MongoDB if c.config.Dns != "" { - c.Db, err = mongo.Connect(context.Background(), options.Client().ApplyURI(c.config.Dns)) + c.Db, err = mongo.Connect(ctx, options.Client().ApplyURI(c.config.Dns)) if err != nil { return nil, errors.New(fmt.Sprintf("连接失败:%v", err)) } } else { - c.Db, err = mongo.Connect(context.Background(), c.config.Opts) + c.Db, err = mongo.Connect(ctx, c.config.Opts) if err != nil { return nil, errors.New(fmt.Sprintf("连接失败:%v", err)) } } // 检查连接 - err = c.Db.Ping(context.TODO(), nil) + err = c.Db.Ping(ctx, nil) if err != nil { return nil, errors.New(fmt.Sprintf("检查连接失败:%v", err)) } @@ -54,10 +48,6 @@ func NewMongoClient(config *ConfigMongoClient) (*MongoClient, error) { } // Close 关闭 -func (c *MongoClient) Close() error { - err := c.Db.Disconnect(context.TODO()) - if err != nil { - return errors.New(fmt.Sprintf("关闭失败:%v", err)) - } - return nil +func (c *MongoClient) Close(ctx context.Context) error { + return c.Db.Disconnect(ctx) } diff --git a/vendor/go.dtapp.net/dorm/mongo_bson.go b/vendor/go.dtapp.net/dorm/mongo_bson.go deleted file mode 100644 index c382773..0000000 --- a/vendor/go.dtapp.net/dorm/mongo_bson.go +++ /dev/null @@ -1 +0,0 @@ -package dorm diff --git a/vendor/go.dtapp.net/dorm/mongo_collection.go b/vendor/go.dtapp.net/dorm/mongo_collection.go new file mode 100644 index 0000000..a84bfb6 --- /dev/null +++ b/vendor/go.dtapp.net/dorm/mongo_collection.go @@ -0,0 +1,56 @@ +package dorm + +import ( + "context" + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" +) + +type MongoCollectionOptions struct { + dbCollection *mongo.Collection // 集合 +} + +// Collection 选择集合 +func (cd *MongoDatabaseOptions) Collection(name string, opts ...*options.CollectionOptions) *MongoCollectionOptions { + return &MongoCollectionOptions{ + dbCollection: cd.dbDatabase.Collection(name, opts...), + } +} + +// CreateOneIndexes 创建一个索引 +func (cc *MongoCollectionOptions) CreateOneIndexes(ctx context.Context, key string, value string) (string, error) { + return cc.dbCollection.Indexes().CreateOne(ctx, mongo.IndexModel{ + Keys: bson.D{{ + Key: key, + Value: value, + }}, + }) +} + +// CreateOneUniqueIndexes 创建一个唯一索引 +func (cc *MongoCollectionOptions) CreateOneUniqueIndexes(ctx context.Context, key string, value string) (string, error) { + return cc.dbCollection.Indexes().CreateOne(ctx, mongo.IndexModel{ + Keys: bson.D{{ + Key: key, + Value: value, + }}, + Options: options.Index().SetUnique(true), + }) +} + +// CreateOneUniqueIndexesOpts 创建一个索引 +func (cc *MongoCollectionOptions) CreateOneUniqueIndexesOpts(ctx context.Context, key string, value string, opts *options.IndexOptions) (string, error) { + return cc.dbCollection.Indexes().CreateOne(ctx, mongo.IndexModel{ + Keys: bson.D{{ + Key: key, + Value: value, + }}, + Options: opts, + }) +} + +// CreateManyIndexes 创建多个索引 +func (cc *MongoCollectionOptions) CreateManyIndexes(ctx context.Context, models []mongo.IndexModel) ([]string, error) { + return cc.dbCollection.Indexes().CreateMany(ctx, models) +} diff --git a/vendor/go.dtapp.net/dorm/mongo_collection_curd.go b/vendor/go.dtapp.net/dorm/mongo_collection_curd.go new file mode 100644 index 0000000..3309494 --- /dev/null +++ b/vendor/go.dtapp.net/dorm/mongo_collection_curd.go @@ -0,0 +1,47 @@ +package dorm + +import ( + "context" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" +) + +// InsertOne 插入一个文档 +func (cc *MongoCollectionOptions) InsertOne(ctx context.Context, document interface{}, opts ...*options.InsertOneOptions) (*mongo.InsertOneResult, error) { + return cc.dbCollection.InsertOne(ctx, document, opts...) +} + +// InsertMany 插入多个文档 +func (cc *MongoCollectionOptions) InsertMany(ctx context.Context, document []interface{}, opts ...*options.InsertManyOptions) (*mongo.InsertManyResult, error) { + return cc.dbCollection.InsertMany(ctx, document, opts...) +} + +// DeleteOne 删除一个文档 +func (cc *MongoCollectionOptions) DeleteOne(ctx context.Context, filter interface{}, opts ...*options.DeleteOptions) (*mongo.DeleteResult, error) { + return cc.dbCollection.DeleteOne(ctx, filter, opts...) +} + +// DeleteMany 删除多个文档 +func (cc *MongoCollectionOptions) DeleteMany(ctx context.Context, filter interface{}, opts ...*options.DeleteOptions) (*mongo.DeleteResult, error) { + return cc.dbCollection.DeleteMany(ctx, filter, opts...) +} + +// UpdateOne 更新一个文档 +func (cc *MongoCollectionOptions) UpdateOne(ctx context.Context, filter interface{}, update interface{}, opts ...*options.UpdateOptions) (*mongo.UpdateResult, error) { + return cc.dbCollection.UpdateOne(ctx, filter, update, opts...) +} + +// UpdateMany 更新多个文档 +func (cc *MongoCollectionOptions) UpdateMany(ctx context.Context, filter interface{}, update interface{}, opts ...*options.UpdateOptions) (*mongo.UpdateResult, error) { + return cc.dbCollection.UpdateMany(ctx, filter, update, opts...) +} + +// FindOne 查询一个文档 +func (cc *MongoCollectionOptions) FindOne(ctx context.Context, filter interface{}, opts ...*options.FindOneOptions) *mongo.SingleResult { + return cc.dbCollection.FindOne(ctx, filter, opts...) +} + +// Find 查询多个文档 +func (cc *MongoCollectionOptions) Find(ctx context.Context, filter interface{}, opts ...*options.FindOptions) (*mongo.Cursor, error) { + return cc.dbCollection.Find(ctx, filter, opts...) +} diff --git a/vendor/go.dtapp.net/dorm/mongo_curd.go b/vendor/go.dtapp.net/dorm/mongo_curd.go deleted file mode 100644 index 80a4908..0000000 --- a/vendor/go.dtapp.net/dorm/mongo_curd.go +++ /dev/null @@ -1,185 +0,0 @@ -package dorm - -import ( - "context" - "go.mongodb.org/mongo-driver/bson" - "go.mongodb.org/mongo-driver/mongo" - "go.mongodb.org/mongo-driver/mongo/options" -) - -// InsertOne 插入一个文档 -func (c *MongoClient) InsertOne(document interface{}) (result *mongo.InsertOneResult, err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result, err = collection.InsertOne(context.TODO(), document) - return -} - -// InsertMany 插入多个文档 -func (c *MongoClient) InsertMany(documents []interface{}) (result *mongo.InsertManyResult, err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result, err = collection.InsertMany(context.TODO(), documents) - return -} - -// Delete 删除文档 -func (c *MongoClient) Delete(filter interface{}) (err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - _, err = collection.DeleteOne(context.TODO(), filter) - return -} - -// DeleteId 删除文档 -func (c *MongoClient) DeleteId(id interface{}) (err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - _, err = collection.DeleteOne(context.TODO(), bson.M{"_id": id}) - return -} - -// DeleteMany 删除多个文档 -func (c *MongoClient) DeleteMany(filter interface{}) (result *mongo.DeleteResult, err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result, err = collection.DeleteMany(context.TODO(), filter) - return -} - -// UpdateOne 更新单个文档 -// 修改字段的值($set) -// 字段增加值 inc($inc) -// 从数组中增加一个元素 push($push) -// 从数组中删除一个元素 pull($pull) -func (c *MongoClient) UpdateOne(filter interface{}, update interface{}) (err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - _, err = collection.UpdateOne(context.TODO(), filter, update) - return -} - -// UpdateId 更新单个文档 -// 修改字段的值($set) -// 字段增加值 inc($inc) -// 从数组中增加一个元素 push($push) -// 从数组中删除一个元素 pull($pull) -func (c *MongoClient) UpdateId(id interface{}, update interface{}) (err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - _, err = collection.UpdateOne(context.TODO(), bson.M{"_id": id}, update) - return -} - -// UpdateMany 更新多个文档 -// 修改字段的值($set) -// 字段增加值 inc($inc) -// 从数组中增加一个元素 push($push) -// 从数组中删除一个元素 pull($pull) -func (c *MongoClient) UpdateMany(filter interface{}, update interface{}) (result *mongo.UpdateResult, err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result, err = collection.UpdateMany(context.TODO(), filter, update) - return -} - -type FindResultI interface { - Many(result interface{}) error -} - -// Find 查询 -func (c *MongoClient) Find(filter interface{}) (*mongo.Cursor, error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - return collection.Find(context.TODO(), filter) -} - -type FindOneResultI interface { - One(result interface{}) error -} - -// FindOne 查询单个文档 -func (c *MongoClient) FindOne(filter interface{}) *mongo.SingleResult { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - return collection.FindOne(context.TODO(), filter) -} - -type FindManyResultI interface { - Many(result interface{}) error -} - -// FindMany 查询多个文档 -func (c *MongoClient) FindMany(filter interface{}) (*mongo.Cursor, error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - return collection.Find(context.TODO(), filter) -} - -// FindManyByFilters 多条件查询 -func (c *MongoClient) FindManyByFilters(filter interface{}) (result *mongo.Cursor, err error) { - collection, err := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName).Clone() - result, err = collection.Find(context.TODO(), bson.M{"$and": filter}) - return result, err -} - -// FindManyByFiltersSort 多条件查询支持排序 -func (c *MongoClient) FindManyByFiltersSort(filter interface{}, Sort interface{}) (result *mongo.Cursor, err error) { - collection, err := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName).Clone() - findOptions := options.Find() - findOptions.SetSort(Sort) - result, err = collection.Find(context.TODO(), filter, findOptions) - return result, err -} - -// FindCollection 查询集合文档 -func (c *MongoClient) FindCollection(Limit int64) (result *mongo.Cursor, err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - findOptions := options.Find() - findOptions.SetLimit(Limit) - result, err = collection.Find(context.TODO(), bson.D{{}}, findOptions) - return result, err -} - -// FindCollectionSort 查询集合文档支持排序 -func (c *MongoClient) FindCollectionSort(Sort interface{}, Limit int64) (result *mongo.Cursor, err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - findOptions := options.Find() - findOptions.SetSort(Sort) - findOptions.SetLimit(Limit) - result, err = collection.Find(context.TODO(), bson.D{{}}, findOptions) - return result, err -} - -// FindManyCollectionSort 查询集合文档支持排序支持条件 -func (c *MongoClient) FindManyCollectionSort(filter interface{}, Sort interface{}) (result *mongo.Cursor, err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - findOptions := options.Find() - findOptions.SetSort(Sort) - result, err = collection.Find(context.TODO(), filter, findOptions) - return result, err -} - -// CollectionCount 查询集合里有多少数据 -func (c *MongoClient) CollectionCount() (name string, size int64) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - name = collection.Name() - size, _ = collection.EstimatedDocumentCount(context.TODO()) - return name, size -} - -// CollectionDocuments 按选项查询集合 -// Skip 跳过 -// Limit 读取数量 -// sort 1 ,-1 . 1 为升序 , -1 为降序 -func (c *MongoClient) CollectionDocuments(Skip, Limit int64, sort int, key string, value interface{}) (result *mongo.Cursor, err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - SORT := bson.D{{"_id", sort}} - filter := bson.D{{key, value}} - findOptions := options.Find().SetSort(SORT).SetLimit(Limit).SetSkip(Skip) - result, err = collection.Find(context.TODO(), filter, findOptions) - return result, err -} - -// AggregateByFiltersSort 统计分析 -func (c *MongoClient) AggregateByFiltersSort(pipeline interface{}) (result *mongo.Cursor, err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result, err = collection.Aggregate(context.TODO(), pipeline) - return result, err -} - -// CountDocumentsByFilters 统计数量 -func (c *MongoClient) CountDocumentsByFilters(filter interface{}) (count int64, err error) { - collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - count, err = collection.CountDocuments(context.TODO(), filter) - return count, err -} diff --git a/vendor/go.dtapp.net/dorm/mongo_curl_find.go b/vendor/go.dtapp.net/dorm/mongo_curl_find.go deleted file mode 100644 index 3219492..0000000 --- a/vendor/go.dtapp.net/dorm/mongo_curl_find.go +++ /dev/null @@ -1,15 +0,0 @@ -package dorm - -import ( - "context" - "go.mongodb.org/mongo-driver/mongo" -) - -type FindResult struct { - cursor *mongo.Cursor - err error -} - -func (f *FindResult) Many(result interface{}) error { - return f.cursor.All(context.TODO(), result) -} diff --git a/vendor/go.dtapp.net/dorm/mongo_curl_find_many.go b/vendor/go.dtapp.net/dorm/mongo_curl_find_many.go deleted file mode 100644 index 192edf6..0000000 --- a/vendor/go.dtapp.net/dorm/mongo_curl_find_many.go +++ /dev/null @@ -1,15 +0,0 @@ -package dorm - -import ( - "context" - "go.mongodb.org/mongo-driver/mongo" -) - -type FindManyResult struct { - cursor *mongo.Cursor - err error -} - -func (f *FindManyResult) Many(result interface{}) error { - return f.cursor.All(context.TODO(), result) -} diff --git a/vendor/go.dtapp.net/dorm/mongo_curl_find_one.go b/vendor/go.dtapp.net/dorm/mongo_curl_find_one.go deleted file mode 100644 index 4ef3666..0000000 --- a/vendor/go.dtapp.net/dorm/mongo_curl_find_one.go +++ /dev/null @@ -1,11 +0,0 @@ -package dorm - -import "go.mongodb.org/mongo-driver/mongo" - -type FindOneResult struct { - singleResult *mongo.SingleResult -} - -func (f *FindOneResult) One(result interface{}) error { - return f.singleResult.Decode(result) -} diff --git a/vendor/go.dtapp.net/dorm/mongo_database.go b/vendor/go.dtapp.net/dorm/mongo_database.go new file mode 100644 index 0000000..75749f4 --- /dev/null +++ b/vendor/go.dtapp.net/dorm/mongo_database.go @@ -0,0 +1,28 @@ +package dorm + +import ( + "context" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" +) + +type MongoDatabaseOptions struct { + dbDatabase *mongo.Database // 数据库 +} + +// Database 选择数据库 +func (c *MongoClient) Database(name string, opts ...*options.DatabaseOptions) *MongoDatabaseOptions { + return &MongoDatabaseOptions{ + dbDatabase: c.Db.Database(name, opts...), + } +} + +// CreateCollection 创建集合 +func (cd *MongoDatabaseOptions) CreateCollection(ctx context.Context, name string, opts ...*options.CreateCollectionOptions) error { + return cd.dbDatabase.CreateCollection(ctx, name, opts...) +} + +// CreateTimeSeriesCollection 创建时间序列集合 +func (cd *MongoDatabaseOptions) CreateTimeSeriesCollection(ctx context.Context, name string, timeField string) error { + return cd.dbDatabase.CreateCollection(ctx, name, options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField(timeField))) +} diff --git a/vendor/go.dtapp.net/dorm/mongo_get.go b/vendor/go.dtapp.net/dorm/mongo_get.go index 8ccd7f6..eaa58b5 100644 --- a/vendor/go.dtapp.net/dorm/mongo_get.go +++ b/vendor/go.dtapp.net/dorm/mongo_get.go @@ -6,13 +6,3 @@ import "go.mongodb.org/mongo-driver/mongo" func (c *MongoClient) GetDb() *mongo.Client { return c.Db } - -// 获取库名 -func (c *MongoClient) getDatabaseName() string { - return c.databaseName -} - -// 获取表名 -func (c *MongoClient) getCollectionName() string { - return c.collectionName -} diff --git a/vendor/go.dtapp.net/dorm/mongo_options.go b/vendor/go.dtapp.net/dorm/mongo_options.go deleted file mode 100644 index c382773..0000000 --- a/vendor/go.dtapp.net/dorm/mongo_options.go +++ /dev/null @@ -1 +0,0 @@ -package dorm diff --git a/vendor/go.dtapp.net/dorm/mongo_session.go b/vendor/go.dtapp.net/dorm/mongo_session.go new file mode 100644 index 0000000..b66ded2 --- /dev/null +++ b/vendor/go.dtapp.net/dorm/mongo_session.go @@ -0,0 +1,50 @@ +package dorm + +import ( + "context" + "errors" + "fmt" + "go.mongodb.org/mongo-driver/mongo" +) + +type MongoSessionOptions struct { + Session mongo.SessionContext // 会话 + Db *mongo.Client // 驱动 + startSession mongo.Session // 开始会话 +} + +// Begin 开始事务,会同时创建开始会话需要在退出时关闭会话 +func (c *MongoClient) Begin() (ms *MongoSessionOptions, err error) { + + var ctx = context.Background() + + ms.Db = c.Db + + // 开始会话 + ms.startSession, err = ms.Db.StartSession() + if err != nil { + return nil, errors.New(fmt.Sprintf("开始会话失败:%v", err)) + } + + // 会话上下文 + ms.Session = mongo.NewSessionContext(ctx, ms.startSession) + + // 会话开启事务 + err = ms.startSession.StartTransaction() + return ms, err +} + +// Close 关闭会话 +func (cs *MongoSessionOptions) Close(ctx context.Context) { + cs.startSession.EndSession(ctx) +} + +// Rollback 回滚事务 +func (cs *MongoSessionOptions) Rollback(ctx context.Context) error { + return cs.startSession.AbortTransaction(ctx) +} + +// Commit 提交事务 +func (cs *MongoSessionOptions) Commit(ctx context.Context) error { + return cs.startSession.CommitTransaction(ctx) +} diff --git a/vendor/go.dtapp.net/dorm/mongo_session_collection.go b/vendor/go.dtapp.net/dorm/mongo_session_collection.go new file mode 100644 index 0000000..31e3905 --- /dev/null +++ b/vendor/go.dtapp.net/dorm/mongo_session_collection.go @@ -0,0 +1,19 @@ +package dorm + +import ( + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" +) + +type MongoSessionCollectionOptions struct { + 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...), // 集合 + } +} diff --git a/vendor/go.dtapp.net/dorm/mongo_session_collection_curd.go b/vendor/go.dtapp.net/dorm/mongo_session_collection_curd.go new file mode 100644 index 0000000..7bca5a7 --- /dev/null +++ b/vendor/go.dtapp.net/dorm/mongo_session_collection_curd.go @@ -0,0 +1,46 @@ +package dorm + +import ( + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" +) + +// InsertOne 插入一个文档 +func (csc *MongoSessionCollectionOptions) InsertOne(document interface{}, opts ...*options.InsertOneOptions) (*mongo.InsertOneResult, error) { + return csc.dbCollection.InsertOne(csc.session, document, opts...) +} + +// InsertMany 插入多个文档 +func (csc *MongoSessionCollectionOptions) InsertMany(document []interface{}, opts ...*options.InsertManyOptions) (*mongo.InsertManyResult, error) { + return csc.dbCollection.InsertMany(csc.session, document, opts...) +} + +// DeleteOne 删除一个文档 +func (csc *MongoSessionCollectionOptions) DeleteOne(filter interface{}, opts ...*options.DeleteOptions) (*mongo.DeleteResult, error) { + return csc.dbCollection.DeleteOne(csc.session, filter, opts...) +} + +// DeleteMany 删除多个文档 +func (csc *MongoSessionCollectionOptions) DeleteMany(filter interface{}, opts ...*options.DeleteOptions) (*mongo.DeleteResult, error) { + return csc.dbCollection.DeleteMany(csc.session, filter, opts...) +} + +// UpdateOne 更新一个文档 +func (csc *MongoSessionCollectionOptions) UpdateOne(filter interface{}, update interface{}, opts ...*options.UpdateOptions) (*mongo.UpdateResult, error) { + return csc.dbCollection.UpdateOne(csc.session, filter, update, opts...) +} + +// UpdateMany 更新多个文档 +func (csc *MongoSessionCollectionOptions) UpdateMany(filter interface{}, update interface{}, opts ...*options.UpdateOptions) (*mongo.UpdateResult, error) { + return csc.dbCollection.UpdateMany(csc.session, filter, update, opts...) +} + +// FindOne 查询一个文档 +func (csc *MongoSessionCollectionOptions) FindOne(filter interface{}, opts ...*options.FindOneOptions) *mongo.SingleResult { + return csc.dbCollection.FindOne(csc.session, filter, opts...) +} + +// Find 查询多个文档 +func (csc *MongoSessionCollectionOptions) Find(filter interface{}, opts ...*options.FindOptions) (*mongo.Cursor, error) { + return csc.dbCollection.Find(csc.session, filter, opts...) +} diff --git a/vendor/go.dtapp.net/dorm/mongo_session_database.go b/vendor/go.dtapp.net/dorm/mongo_session_database.go new file mode 100644 index 0000000..1d2952c --- /dev/null +++ b/vendor/go.dtapp.net/dorm/mongo_session_database.go @@ -0,0 +1,19 @@ +package dorm + +import ( + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" +) + +type MongoSessionDatabaseOptions struct { + 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...), // 数据库 + } +} diff --git a/vendor/go.dtapp.net/dorm/mongo_set.go b/vendor/go.dtapp.net/dorm/mongo_set.go deleted file mode 100644 index 818b203..0000000 --- a/vendor/go.dtapp.net/dorm/mongo_set.go +++ /dev/null @@ -1,28 +0,0 @@ -package dorm - -import "reflect" - -// Database 设置库名 -func (c *MongoClient) Database(databaseName string) *MongoClient { - c.databaseName = databaseName - return c -} - -// Collection 设置表名 -func (c *MongoClient) Collection(collectionName string) *MongoClient { - c.collectionName = collectionName - return c -} - -// Model 传入模型自动获取库名和表名 -func (c *MongoClient) Model(value interface{}) *MongoClient { - // https://studygolang.com/articles/896 - val := reflect.ValueOf(value) - if methodValue := val.MethodByName("Database"); methodValue.IsValid() { - c.databaseName = methodValue.Call(nil)[0].String() - } - if methodValue := val.MethodByName("TableName"); methodValue.IsValid() { - c.collectionName = methodValue.Call(nil)[0].String() - } - return c -} diff --git a/vendor/go.dtapp.net/dorm/mongo_time.go b/vendor/go.dtapp.net/dorm/mongo_time.go index b51646c..6331c35 100644 --- a/vendor/go.dtapp.net/dorm/mongo_time.go +++ b/vendor/go.dtapp.net/dorm/mongo_time.go @@ -7,44 +7,79 @@ import ( "time" ) -// BsonTime 类型 +// BsonTime 时间类型 type BsonTime time.Time -// Value 时间类型 -func (t BsonTime) Value() string { - return gotime.SetCurrent(time.Time(t)).Bson() -} - // MarshalJSON 实现json序列化 -func (t BsonTime) MarshalJSON() ([]byte, error) { - //log.Println("MarshalJSON") +func (bt BsonTime) MarshalJSON() ([]byte, error) { + b := make([]byte, 0) - b = append(b, gotime.SetCurrent(time.Time(t)).Bson()...) + + b = append(b, gotime.SetCurrent(time.Time(bt)).Bson()...) + return b, nil } // UnmarshalJSON 实现json反序列化 -func (t *BsonTime) UnmarshalJSON(data []byte) (err error) { - //log.Println("UnmarshalJSON") - t1 := gotime.SetCurrentParse(string(data)) - *t = BsonTime(t1.Time) - return +func (bt *BsonTime) UnmarshalJSON(data []byte) (err error) { + + if string(data) == "null" { + return nil + } + + bsonTime := gotime.SetCurrentParse(string(data)) + + *bt = BsonTime(bsonTime.Time) + + return nil +} + +func (bt BsonTime) Time() time.Time { + return gotime.SetCurrent(time.Time(bt)).Time +} + +func (bt BsonTime) Format() string { + return gotime.SetCurrent(time.Time(bt)).Format() +} + +func (bt BsonTime) TimePro() gotime.Pro { + return gotime.SetCurrent(time.Time(bt)) +} + +// NewBsonTimeCurrent 创建当前时间 +func NewBsonTimeCurrent() BsonTime { + return BsonTime(gotime.Current().Time) +} + +// NewBsonTimeFromTime 创建某个时间 +func NewBsonTimeFromTime(t time.Time) BsonTime { + return BsonTime(t) +} + +// NewBsonTimeFromString 创建某个时间 字符串 +func NewBsonTimeFromString(t string) BsonTime { + return BsonTime(gotime.SetCurrentParse(t).Time) +} + +// Value 时间类型 +func (bt BsonTime) Value() string { + return gotime.SetCurrent(time.Time(bt)).Bson() } // MarshalBSONValue 实现bson序列化 -func (t BsonTime) MarshalBSONValue() (bsontype.Type, []byte, error) { +func (bt BsonTime) MarshalBSONValue() (bsontype.Type, []byte, error) { //log.Println("MarshalBSONValue") - targetTime := gotime.SetCurrent(time.Time(t)).Bson() + targetTime := gotime.SetCurrent(time.Time(bt)).Bson() return bson.MarshalValue(targetTime) } // UnmarshalBSONValue 实现bson反序列化 -func (t *BsonTime) UnmarshalBSONValue(t2 bsontype.Type, data []byte) error { +func (bt *BsonTime) UnmarshalBSONValue(t2 bsontype.Type, data []byte) error { //log.Println("UnmarshalBSONValue") t1 := gotime.SetCurrentParse(string(data)) //if string(data) == "" { // return errors.New(fmt.Sprintf("%s, %s, %s", "读取数据失败:", t2, data)) //} - *t = BsonTime(t1.Time) + *bt = BsonTime(t1.Time) return nil } diff --git a/vendor/go.dtapp.net/dorm/mongo_transaction.go b/vendor/go.dtapp.net/dorm/mongo_transaction.go deleted file mode 100644 index bec0430..0000000 --- a/vendor/go.dtapp.net/dorm/mongo_transaction.go +++ /dev/null @@ -1,48 +0,0 @@ -package dorm - -import ( - "context" - "go.mongodb.org/mongo-driver/mongo" -) - -type MongoTransaction struct { - startSession mongo.Session - Session mongo.SessionContext - db *mongo.Client // 驱动 - databaseName string // 库名 - collectionName string // 表名 -} - -// Begin 开始事务,会同时创建开始会话需要在退出时关闭会话 -func (c *MongoClient) Begin() (ms MongoTransaction, err error) { - - ms.db = c.Db - - // 开始会话 - ms.startSession, err = ms.db.StartSession() - if err != nil { - panic(err) - } - - // 会话上下文 - ms.Session = mongo.NewSessionContext(context.Background(), ms.startSession) - - // 会话开启事务 - err = ms.startSession.StartTransaction() - return ms, err -} - -// Close 关闭会话 -func (ms *MongoTransaction) Close() { - ms.startSession.EndSession(context.TODO()) -} - -// Rollback 回滚事务 -func (ms *MongoTransaction) Rollback() error { - return ms.startSession.AbortTransaction(context.Background()) -} - -// Commit 提交事务 -func (ms *MongoTransaction) Commit() error { - return ms.startSession.CommitTransaction(context.Background()) -} diff --git a/vendor/go.dtapp.net/dorm/mongo_transaction_curd.go b/vendor/go.dtapp.net/dorm/mongo_transaction_curd.go deleted file mode 100644 index e7cfd81..0000000 --- a/vendor/go.dtapp.net/dorm/mongo_transaction_curd.go +++ /dev/null @@ -1,174 +0,0 @@ -package dorm - -import ( - "context" - "go.mongodb.org/mongo-driver/bson" - "go.mongodb.org/mongo-driver/mongo" - "go.mongodb.org/mongo-driver/mongo/options" -) - -// InsertOne 插入一个文档 -func (ms *MongoTransaction) InsertOne(document interface{}) (result *mongo.InsertOneResult, err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - result, err = collection.InsertOne(ms.Session, document) - return -} - -// InsertMany 插入多个文档 -func (ms *MongoTransaction) InsertMany(documents []interface{}) (result *mongo.InsertManyResult, err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - result, err = collection.InsertMany(ms.Session, documents) - return -} - -// Delete 删除文档 -func (ms *MongoTransaction) Delete(filter interface{}) (err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - _, err = collection.DeleteOne(ms.Session, filter) - return -} - -// DeleteId 删除文档 -func (ms *MongoTransaction) DeleteId(id interface{}) (err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - _, err = collection.DeleteOne(ms.Session, bson.M{"_id": id}) - return -} - -// DeleteMany 删除多个文档 -func (ms *MongoTransaction) DeleteMany(key string, value interface{}) (result *mongo.DeleteResult, err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - filter := bson.D{{key, value}} - result, err = collection.DeleteMany(ms.Session, filter) - return -} - -// UpdateOne 更新单个文档 -// 修改字段的值($set) -// 字段增加值 inc($inc) -// 从数组中增加一个元素 push($push) -// 从数组中删除一个元素 pull($pull) -func (ms *MongoTransaction) UpdateOne(filter interface{}, update interface{}) (err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - _, err = collection.UpdateOne(ms.Session, filter, update) - return -} - -// UpdateId 更新单个文档 -// 修改字段的值($set) -// 字段增加值 inc($inc) -// 从数组中增加一个元素 push($push) -// 从数组中删除一个元素 pull($pull) -func (ms *MongoTransaction) UpdateId(id interface{}, update interface{}) (err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - _, err = collection.UpdateOne(context.TODO(), bson.M{"_id": id}, update) - return -} - -// UpdateMany 更新多个文档 -// 修改字段的值($set) -// 字段增加值 inc($inc) -// 从数组中增加一个元素 push($push) -// 从数组中删除一个元素 pull($pull) -func (ms *MongoTransaction) UpdateMany(filter interface{}, update interface{}) (result *mongo.UpdateResult, err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - result, err = collection.UpdateMany(ms.Session, filter, update) - return -} - -// Find 查询 -func (ms *MongoTransaction) Find(filter interface{}) (*mongo.Cursor, error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - return collection.Find(ms.Session, filter) -} - -// FindOne 查询单个文档 -func (ms *MongoTransaction) FindOne(filter interface{}) *mongo.SingleResult { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - return collection.FindOne(ms.Session, filter) -} - -// FindMany 查询多个文档 -func (ms *MongoTransaction) FindMany(filter interface{}) (*mongo.Cursor, error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - return collection.Find(ms.Session, filter) -} - -// FindManyByFilters 多条件查询 -func (ms *MongoTransaction) FindManyByFilters(filter interface{}) (result *mongo.Cursor, err error) { - collection, err := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName).Clone() - result, err = collection.Find(ms.Session, bson.M{"$and": filter}) - return result, err -} - -// FindManyByFiltersSort 多条件查询支持排序 -func (ms *MongoTransaction) FindManyByFiltersSort(filter interface{}, Sort interface{}) (result *mongo.Cursor, err error) { - collection, err := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName).Clone() - findOptions := options.Find() - findOptions.SetSort(Sort) - result, err = collection.Find(ms.Session, filter, findOptions) - return result, err -} - -// FindCollection 查询集合文档 -func (ms *MongoTransaction) FindCollection(Limit int64) (result *mongo.Cursor, err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - findOptions := options.Find() - findOptions.SetLimit(Limit) - result, err = collection.Find(ms.Session, bson.D{{}}, findOptions) - return result, err -} - -// FindCollectionSort 查询集合文档支持排序 -func (ms *MongoTransaction) FindCollectionSort(Sort interface{}, Limit int64) (result *mongo.Cursor, err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - findOptions := options.Find() - findOptions.SetSort(Sort) - findOptions.SetLimit(Limit) - result, err = collection.Find(ms.Session, bson.D{{}}, findOptions) - return result, err -} - -// FindManyCollectionSort 查询集合文档支持排序支持条件 -func (ms *MongoTransaction) FindManyCollectionSort(filter interface{}, Sort interface{}) (result *mongo.Cursor, err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - findOptions := options.Find() - findOptions.SetSort(Sort) - result, err = collection.Find(ms.Session, filter, findOptions) - return result, err -} - -// CollectionCount 查询集合里有多少数据 -func (ms *MongoTransaction) CollectionCount(ctx context.Context) (name string, size int64) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - name = collection.Name() - size, _ = collection.EstimatedDocumentCount(ctx) - return name, size -} - -// CollectionDocuments 按选项查询集合 -// Skip 跳过 -// Limit 读取数量 -// sort 1 ,-1 . 1 为升序 , -1 为降序 -func (ms *MongoTransaction) CollectionDocuments(Skip, Limit int64, sort int, key string, value interface{}) (result *mongo.Cursor, err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - SORT := bson.D{{"_id", sort}} - filter := bson.D{{key, value}} - findOptions := options.Find().SetSort(SORT).SetLimit(Limit).SetSkip(Skip) - result, err = collection.Find(ms.Session, filter, findOptions) - return result, err -} - -// AggregateByFiltersSort 统计分析 -func (ms *MongoTransaction) AggregateByFiltersSort(pipeline interface{}) (result *mongo.Cursor, err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - result, err = collection.Aggregate(ms.Session, pipeline) - return result, err -} - -// CountDocumentsByFilters 统计数量 -func (ms *MongoTransaction) CountDocumentsByFilters(filter interface{}) (count int64, err error) { - collection := ms.db.Database(ms.getDatabaseName()).Collection(ms.collectionName) - count, err = collection.CountDocuments(ms.Session, filter) - return count, err -} diff --git a/vendor/go.dtapp.net/dorm/mongo_transaction_get.go b/vendor/go.dtapp.net/dorm/mongo_transaction_get.go deleted file mode 100644 index 3926370..0000000 --- a/vendor/go.dtapp.net/dorm/mongo_transaction_get.go +++ /dev/null @@ -1,11 +0,0 @@ -package dorm - -// 获取库名 -func (ms *MongoTransaction) getDatabaseName() string { - return ms.databaseName -} - -// 获取表名 -func (ms *MongoTransaction) getCollectionName() string { - return ms.collectionName -} diff --git a/vendor/go.dtapp.net/dorm/mongo_transaction_set.go b/vendor/go.dtapp.net/dorm/mongo_transaction_set.go deleted file mode 100644 index e36daa6..0000000 --- a/vendor/go.dtapp.net/dorm/mongo_transaction_set.go +++ /dev/null @@ -1,28 +0,0 @@ -package dorm - -import "reflect" - -// Database 设置库名 -func (ms *MongoTransaction) Database(databaseName string) *MongoTransaction { - ms.databaseName = databaseName - return ms -} - -// Collection 设置表名 -func (ms *MongoTransaction) Collection(collectionName string) *MongoTransaction { - ms.collectionName = collectionName - return ms -} - -// Model 传入模型自动获取库名和表名 -func (ms *MongoTransaction) Model(value interface{}) *MongoTransaction { - // https://studygolang.com/articles/896 - val := reflect.ValueOf(value) - if methodValue := val.MethodByName("Database"); methodValue.IsValid() { - ms.databaseName = methodValue.Call(nil)[0].String() - } - if methodValue := val.MethodByName("TableName"); methodValue.IsValid() { - ms.collectionName = methodValue.Call(nil)[0].String() - } - return ms -} diff --git a/vendor/modules.txt b/vendor/modules.txt index ab83b97..9c0606f 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -32,7 +32,7 @@ github.com/go-playground/locales/currency # github.com/go-playground/universal-translator v0.18.0 ## explicit; go 1.13 github.com/go-playground/universal-translator -# github.com/go-playground/validator/v10 v10.11.0 +# github.com/go-playground/validator/v10 v10.11.1 ## explicit; go 1.13 github.com/go-playground/validator/v10 # github.com/go-redis/redis/v9 v9.0.0-beta.2 @@ -246,7 +246,7 @@ github.com/xdg-go/stringprep # github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a ## explicit; go 1.12 github.com/youmark/pkcs8 -# go.dtapp.net/dorm v1.0.33 +# go.dtapp.net/dorm v1.0.36 ## explicit; go 1.19 go.dtapp.net/dorm # go.dtapp.net/goip v1.0.34