91 lines
2.0 KiB
Go
91 lines
2.0 KiB
Go
package monitorSer
|
|
|
|
import (
|
|
"context"
|
|
"stat/api/proto"
|
|
"stat/models/monitormod"
|
|
"time"
|
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
)
|
|
|
|
func SearchMonitor(ctx context.Context, req *proto.MonitorSearch) (resp *proto.MonitorSearchResp, err error) {
|
|
resp = &proto.MonitorSearchResp{}
|
|
|
|
filter := bson.M{}
|
|
opt := &options.FindOptions{}
|
|
|
|
if req.Status != nil {
|
|
filter[monitormod.FN.Monitor.Status] = *req.Status
|
|
}
|
|
if req.Name != nil {
|
|
filter[monitormod.FN.Monitor.Name] = bson.M{"$regex": *req.Name}
|
|
}
|
|
if req.Category != nil {
|
|
filter[monitormod.FN.Monitor.Category] = *req.Category
|
|
}
|
|
opt.SetSort(bson.M{monitormod.FN.Monitor.CreatedAt: -1})
|
|
opt.SetSkip((req.PageNum - 1) * req.PageSize)
|
|
opt.SetLimit(req.PageSize)
|
|
|
|
resp.Total, err = monitormod.CountMonitors(ctx, filter)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if resp.Total == 0 {
|
|
return resp, nil
|
|
}
|
|
MonitorList, serr := monitormod.FindManyMonitor(ctx, filter, opt)
|
|
if serr != nil {
|
|
return nil, serr
|
|
}
|
|
resp.List = MonitorList
|
|
return
|
|
}
|
|
|
|
func AddMonitor(ctx context.Context, req *proto.MonitorAddReq) error {
|
|
now := time.Now()
|
|
req.CreatedAt = now
|
|
req.UpdatedAt = now
|
|
|
|
serr := monitormod.InsertOneMonitor(ctx, &req.Monitor)
|
|
if serr != nil {
|
|
return serr
|
|
}
|
|
return nil
|
|
}
|
|
func DelMonitor(ctx context.Context, id string) error {
|
|
objectId, err := primitive.ObjectIDFromHex(id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
adFilter := bson.M{monitormod.FN.Monitor.ID: objectId}
|
|
//删除
|
|
_, serr := monitormod.DelOneMonitor(ctx, adFilter)
|
|
if serr != nil {
|
|
return serr
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func UpdateMonitor(ctx context.Context, req *proto.MonitorUpdateReq) error {
|
|
now := time.Now()
|
|
req.Param.UpdatedAt = &now
|
|
objectId, err := primitive.ObjectIDFromHex(req.Id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
adFilter := bson.M{monitormod.FN.Monitor.ID: objectId}
|
|
updateDoc := bson.M{"$set": req.Param}
|
|
serr := monitormod.UpdateOneMonitor(ctx, adFilter, updateDoc)
|
|
if serr != nil {
|
|
return serr
|
|
}
|
|
return nil
|
|
}
|