sitesMonitorRepo.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package mongo
  2. import (
  3. "context"
  4. "fwh-toolbox-server/database"
  5. "fwh-toolbox-server/domain"
  6. "time"
  7. "go.mongodb.org/mongo-driver/bson"
  8. "go.mongodb.org/mongo-driver/mongo"
  9. "go.mongodb.org/mongo-driver/mongo/options"
  10. )
  11. // 从数据库获取站点监控配置列表
  12. func GetSiteMonitorConfig() ([]domain.SitesMonitorConfig, error) {
  13. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  14. defer cancel()
  15. collection := database.GetCollection("SiteMonitorConfig")
  16. cursor, err := collection.Find(ctx, bson.M{}) // 空条件,查全部
  17. if err != nil {
  18. return nil, err
  19. }
  20. defer cursor.Close(ctx)
  21. var configList []domain.SitesMonitorConfig
  22. for cursor.Next(ctx) {
  23. var cfg domain.SitesMonitorConfig
  24. if err := cursor.Decode(&cfg); err != nil {
  25. return nil, err
  26. }
  27. configList = append(configList, cfg)
  28. }
  29. return configList, nil
  30. }
  31. // 从数据库获取监控名列表
  32. func GetSiteMonitorNameList() ([]string, error) {
  33. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  34. defer cancel()
  35. collection := database.GetCollection("SiteMonitorConfig")
  36. cursor, err := collection.Find(
  37. ctx,
  38. bson.M{}, // 空条件,查全部
  39. options.Find().SetProjection(bson.M{
  40. "name": 1, // 只要 name 字段
  41. "_id": 0, // 不要 _id 字段(默认会返回)
  42. }),
  43. )
  44. if err != nil {
  45. return nil, err
  46. }
  47. defer cursor.Close(ctx)
  48. var nameList []string
  49. for cursor.Next(ctx) {
  50. var result struct {
  51. Name string `bson:"name"`
  52. }
  53. if err := cursor.Decode(&result); err != nil {
  54. return nil, err
  55. }
  56. nameList = append(nameList, result.Name)
  57. }
  58. return nameList, nil
  59. }
  60. // 从数据库获取一条站点监控配置
  61. func GetOneSiteMonitorConfig(name string) ([]domain.SitesMonitorConfig, error) {
  62. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  63. defer cancel()
  64. collection := database.GetCollection("SiteMonitorConfig")
  65. var cfg domain.SitesMonitorConfig
  66. err := collection.FindOne(ctx, bson.M{"name": name}).Decode(&cfg)
  67. if err == mongo.ErrNoDocuments {
  68. return []domain.SitesMonitorConfig{}, nil
  69. } else if err != nil {
  70. return nil, err
  71. }
  72. var configList []domain.SitesMonitorConfig
  73. configList = append(configList, cfg)
  74. return configList, nil
  75. }
  76. // 插入一条站点监控配置到数据库
  77. func InsertSiteMonitorConfig(config domain.SitesMonitorConfig) error {
  78. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  79. defer cancel()
  80. collection := database.GetCollection("SiteMonitorConfig")
  81. // _, err := collection.InsertOne(ctx, config)
  82. filter := bson.M{"name": config.Name} // 按用户名匹配
  83. update := bson.M{
  84. "$set": config, // 如果存在就更新所有字段
  85. }
  86. opts := options.Update().SetUpsert(true)
  87. _, err := collection.UpdateOne(ctx, filter, update, opts)
  88. if err != nil {
  89. return err
  90. }
  91. return nil
  92. }
  93. // 更新一条站点监控配置到数据库
  94. func UpdateSiteMonitorConfig(name string, config domain.SitesMonitorConfig) error {
  95. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  96. defer cancel()
  97. collection := database.GetCollection("SiteMonitorConfig")
  98. // _, err := collection.InsertOne(ctx, config)
  99. filter := bson.M{"name": name} // 按用户名匹配
  100. update := bson.M{
  101. "$set": config, // 如果存在就更新所有字段
  102. }
  103. opts := options.Update().SetUpsert(true)
  104. _, err := collection.UpdateOne(ctx, filter, update, opts)
  105. if err != nil {
  106. return err
  107. }
  108. return nil
  109. }
  110. // 删除一条站点监控配置
  111. func DeleteSiteMonitorConfig(name string) error {
  112. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  113. defer cancel()
  114. filter := bson.M{"name": name} // 删除条件
  115. collection := database.GetCollection("SiteMonitorConfig")
  116. _, err := collection.DeleteOne(ctx, filter)
  117. if err != nil {
  118. return err
  119. }
  120. return nil
  121. }
  122. // 更新一条站点监控页面配置到数据库
  123. func UpdateSiteMonitorPageConfig(name string, config domain.MonitorPageConfig) error {
  124. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  125. defer cancel()
  126. collection := database.GetCollection("SiteMonitorConfig")
  127. // _, err := collection.InsertOne(ctx, config)
  128. filter := bson.M{"name": name} // 按用户名匹配
  129. update := bson.M{
  130. "$set": bson.M{
  131. "pageConfig": config, // 更新页面配置字段
  132. },
  133. }
  134. opts := options.Update().SetUpsert(true)
  135. _, err := collection.UpdateOne(ctx, filter, update, opts)
  136. if err != nil {
  137. return err
  138. }
  139. return nil
  140. }