sitesMonitorRepo.go 4.5 KB

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