46 lines
908 B
Go
46 lines
908 B
Go
package impl
|
|
|
|
import (
|
|
"context"
|
|
|
|
"gitlab.com/go-course-project/go17/devcloud-mini/maudit/apps/event"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
)
|
|
|
|
// 存储
|
|
// 选择MongoDB
|
|
func (i *impl) SaveEvent(ctx context.Context, in *event.EventSet) error {
|
|
i.log.Debug().Msgf("events: %s", in)
|
|
|
|
_, err := i.col.InsertMany(ctx, in.ToDocs())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 查询
|
|
func (i *impl) QueryEvent(ctx context.Context, in *event.QueryEventRequest) (*event.EventSet, error) {
|
|
set := event.NewEventSet()
|
|
|
|
filter := bson.M{}
|
|
|
|
opt := options.Find()
|
|
opt.SetLimit(int64(in.PageSize))
|
|
opt.SetSkip(in.ComputeOffset())
|
|
cursor, err := i.col.Find(ctx, filter, opt)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
for cursor.Next(ctx) {
|
|
e := event.NewEvent()
|
|
if err := cursor.Decode(e); err != nil {
|
|
return nil, err
|
|
}
|
|
set.Add(e)
|
|
}
|
|
return set, nil
|
|
}
|