Files
2026-05-20 16:13:58 +08:00

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
}