131 lines
4.2 KiB
Go
131 lines
4.2 KiB
Go
package eventmod
|
|
|
|
import (
|
|
"context"
|
|
"videoweb/pub/common/log"
|
|
"videoweb/pub/common/srvdef"
|
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
)
|
|
|
|
// InsertOneEvent 插入一个事件
|
|
func InsertOneEvent(ctx context.Context, event *Event) *srvdef.SrvErr {
|
|
if _, err := db.InsertOne(ctx, event); err != nil {
|
|
log.Warn("eventmod:InsertOneEvent db.InsertOne failed", log.E(err))
|
|
return srvdef.New(srvdef.ErrDbInsertError, "", "")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// InsertManyEvent 批量插入事件
|
|
func InsertManyEvent(ctx context.Context, events *EventList) *srvdef.SrvErr {
|
|
if _, err := db.InsertMany(ctx, events); err != nil {
|
|
log.Warn("eventmod:InsertManyEvent db.InsertMany failed", log.E(err))
|
|
return srvdef.New(srvdef.ErrDbInsertError, "", "")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// DelOneEvent 删除一个事件
|
|
func DelOneEvent(ctx context.Context, filter bson.M) (int64, *srvdef.SrvErr) {
|
|
count, err := db.DeleteOne(ctx, filter)
|
|
if err != nil {
|
|
log.Warn("eventmod:DelOneEvent db.DeleteOne failed",
|
|
log.E(err), log.Any("filter", filter))
|
|
return 0, srvdef.New(srvdef.ErrDbDeleteError, "", "")
|
|
}
|
|
return count, nil
|
|
}
|
|
|
|
// DelManyEvent 批量删除事件
|
|
func DelManyEvent(ctx context.Context, filter bson.M) (int64, *srvdef.SrvErr) {
|
|
count, err := db.DeleteMany(ctx, filter)
|
|
if err != nil {
|
|
log.Warn("eventmod:DelManyEvent db.DeleteMany failed",
|
|
log.E(err), log.Any("filter", filter))
|
|
return 0, srvdef.New(srvdef.ErrDbDeleteError, "", "")
|
|
}
|
|
return count, nil
|
|
}
|
|
|
|
// FindOneEvent 查找一个事件
|
|
func FindOneEvent(ctx context.Context, filter bson.M, opts ...*options.FindOneOptions) (*Event, *srvdef.SrvErr) {
|
|
var event Event
|
|
if err := db.FindOneEx(ctx, &event, filter, opts...); err != nil {
|
|
if err != mongo.ErrNoDocuments {
|
|
log.Warn("eventmod:FindOneEvent db.FindOne failed",
|
|
log.E(err), log.Any("filter", filter))
|
|
return nil, srvdef.New(srvdef.ErrDbQueryError, "", "")
|
|
}
|
|
return nil, srvdef.New(srvdef.ErrNoData, "", "")
|
|
}
|
|
return &event, nil
|
|
}
|
|
|
|
// FindManyEvent 查找多个事件
|
|
func FindManyEvent(ctx context.Context, filter bson.M, opts ...*options.FindOptions) (EventList, *srvdef.SrvErr) {
|
|
data := make(EventList, 0)
|
|
if err := db.Find(ctx, &data, filter, opts...); err != nil {
|
|
log.Warn("eventmod:FindManyEvent db.Find failed",
|
|
log.E(err), log.Any("filter", filter))
|
|
return nil, srvdef.New(srvdef.ErrDbQueryError, "", "")
|
|
}
|
|
return data, nil
|
|
}
|
|
|
|
// CountEvent 统计事件数量
|
|
func CountEvent(ctx context.Context, filter bson.M) (int64, *srvdef.SrvErr) {
|
|
count, err := db.Count(ctx, filter)
|
|
if err != nil {
|
|
log.Warn("eventmod:CountEvent db.Count failed",
|
|
log.E(err), log.Any("filter", filter))
|
|
return 0, srvdef.New(srvdef.ErrDbQueryError, "", "")
|
|
}
|
|
return count, nil
|
|
}
|
|
|
|
// UpdateOneEvent 更新一个事件
|
|
func UpdateOneEvent(ctx context.Context, filter bson.M, update bson.M) *srvdef.SrvErr {
|
|
result, err := db.UpdateOne(ctx, filter, update)
|
|
if err != nil {
|
|
log.Warn("eventmod:UpdateOneEvent db.UpdateOne failed",
|
|
log.E(err), log.Any("filter", filter))
|
|
return srvdef.New(srvdef.ErrDbUpdateError, "", "")
|
|
}
|
|
if result.MatchedCount != 1 {
|
|
log.Warn("eventmod:UpdateOneEvent db.UpdateOne not matched",
|
|
log.Any("filter", filter))
|
|
return srvdef.New(srvdef.ErrNoData, "", "")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// UpdateManyEvent 批量更新事件
|
|
func UpdateManyEvent(ctx context.Context, filter bson.M, update bson.M) *srvdef.SrvErr {
|
|
result, err := db.UpdateMany(ctx, filter, update)
|
|
if err != nil {
|
|
log.Warn("eventmod:UpdateManyEvent db.UpdateMany failed",
|
|
log.E(err), log.Any("filter", filter))
|
|
return srvdef.New(srvdef.ErrDbUpdateError, "", "")
|
|
}
|
|
if result.MatchedCount < 1 {
|
|
log.Warn("eventmod:UpdateManyEvent db.UpdateMany not matched",
|
|
log.Any("filter", filter))
|
|
return srvdef.New(srvdef.ErrNoData, "", "")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// UpsertOneEvent 插入或更新一个事件
|
|
func UpsertOneEvent(ctx context.Context, filter bson.M, update bson.M) *srvdef.SrvErr {
|
|
opts := options.Update().SetUpsert(true)
|
|
if _, err := db.UpdateOne(ctx, filter, update, opts); err != nil {
|
|
log.Warn("eventmod:UpsertOneEvent db.UpdateOne failed",
|
|
log.E(err), log.Any("filter", filter))
|
|
return srvdef.New(srvdef.ErrDbUpdateError, "", "")
|
|
}
|
|
return nil
|
|
}
|