package eventmod import ( "context" "hkdj-web-server/pub/common/log" "hkdj-web-server/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 }