| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- package mongo
- import (
- "context"
- "fwh-toolbox-server/database"
- "fwh-toolbox-server/domain"
- "time"
- "go.mongodb.org/mongo-driver/bson"
- "go.mongodb.org/mongo-driver/mongo"
- "go.mongodb.org/mongo-driver/mongo/options"
- )
- const (
- CollectionName_SiteMonitorConfig = "SiteMonitorConfig"
- )
- // 从数据库获取站点监控配置列表
- func GetSiteMonitorConfig() ([]domain.SitesMonitorConfig, error) {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- collection := database.GetCollection(CollectionName_SiteMonitorConfig)
- cursor, err := collection.Find(ctx, bson.M{}) // 空条件,查全部
- if err != nil {
- return nil, err
- }
- defer cursor.Close(ctx)
- var configList []domain.SitesMonitorConfig
- for cursor.Next(ctx) {
- var cfg domain.SitesMonitorConfig
- if err := cursor.Decode(&cfg); err != nil {
- return nil, err
- }
- configList = append(configList, cfg)
- }
- return configList, nil
- }
- // 从数据库获取监控名列表
- func GetSiteMonitorNameList() ([]string, error) {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- collection := database.GetCollection(CollectionName_SiteMonitorConfig)
- cursor, err := collection.Find(
- ctx,
- bson.M{}, // 空条件,查全部
- options.Find().SetProjection(bson.M{
- "name": 1, // 只要 name 字段
- "_id": 0, // 不要 _id 字段(默认会返回)
- }),
- )
- if err != nil {
- return nil, err
- }
- defer cursor.Close(ctx)
- var nameList []string
- for cursor.Next(ctx) {
- var result struct {
- Name string `bson:"name"`
- }
- if err := cursor.Decode(&result); err != nil {
- return nil, err
- }
- nameList = append(nameList, result.Name)
- }
- return nameList, nil
- }
- // 从数据库获取一条站点监控配置
- func GetOneSiteMonitorConfig(name string) ([]domain.SitesMonitorConfig, error) {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- collection := database.GetCollection(CollectionName_SiteMonitorConfig)
- var cfg domain.SitesMonitorConfig
- err := collection.FindOne(ctx, bson.M{"name": name}).Decode(&cfg)
- if err == mongo.ErrNoDocuments {
- return []domain.SitesMonitorConfig{}, nil
- } else if err != nil {
- return nil, err
- }
- var configList []domain.SitesMonitorConfig
- configList = append(configList, cfg)
- return configList, nil
- }
- // 插入一条站点监控配置到数据库
- func InsertSiteMonitorConfig(config domain.SitesMonitorConfig) error {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- collection := database.GetCollection(CollectionName_SiteMonitorConfig)
- // _, err := collection.InsertOne(ctx, config)
- filter := bson.M{"name": config.Name} // 按用户名匹配
- update := bson.M{
- "$set": config, // 如果存在就更新所有字段
- }
- opts := options.Update().SetUpsert(true)
- _, err := collection.UpdateOne(ctx, filter, update, opts)
- if err != nil {
- return err
- }
- return nil
- }
- // 更新一条站点监控配置到数据库
- func UpdateSiteMonitorConfig(name string, config domain.SitesMonitorConfig) error {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- collection := database.GetCollection(CollectionName_SiteMonitorConfig)
- // _, err := collection.InsertOne(ctx, config)
- filter := bson.M{"name": name} // 按用户名匹配
- update := bson.M{
- "$set": config, // 如果存在就更新所有字段
- }
- opts := options.Update().SetUpsert(true)
- _, err := collection.UpdateOne(ctx, filter, update, opts)
- if err != nil {
- return err
- }
- return nil
- }
- // 删除一条站点监控配置
- func DeleteSiteMonitorConfig(name string) error {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- filter := bson.M{"name": name} // 删除条件
- collection := database.GetCollection(CollectionName_SiteMonitorConfig)
- _, err := collection.DeleteOne(ctx, filter)
- if err != nil {
- return err
- }
- return nil
- }
- // 更新一条站点监控页面配置到数据库
- func UpdateSiteMonitorPageConfig(name string, config domain.MonitorPageConfig) error {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- collection := database.GetCollection(CollectionName_SiteMonitorConfig)
- // _, err := collection.InsertOne(ctx, config)
- filter := bson.M{"name": name} // 按用户名匹配
- update := bson.M{
- "$set": bson.M{
- "pageConfig": config, // 更新页面配置字段
- },
- }
- opts := options.Update().SetUpsert(true)
- _, err := collection.UpdateOne(ctx, filter, update, opts)
- if err != nil {
- return err
- }
- return nil
- }
|