sitesAnalysisControllers.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package controllers
  2. import (
  3. "context"
  4. "fwh-toolbox-server/database"
  5. "time"
  6. "go.mongodb.org/mongo-driver/bson"
  7. "go.mongodb.org/mongo-driver/bson/primitive"
  8. "go.mongodb.org/mongo-driver/mongo/options"
  9. )
  10. type Progress string // 'pending' | 'running' | 'error' | 'complete'
  11. type SiteAnalysisInfo struct {
  12. Id primitive.ObjectID `bson:"_id" json:"id"`
  13. Sn string `bson:"sn" json:"sn"`
  14. Description string `bson:"description" json:"description"`
  15. Item []string `bson:"item" json:"item"`
  16. Progress Progress `bson:"progress" json:"progress"`
  17. }
  18. type SiteAnalysisConfig struct {
  19. Id primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
  20. Sn string `bson:"sn" json:"sn"`
  21. Description string `bson:"description" json:"description"`
  22. Item []string `bson:"item" json:"item"`
  23. Progress Progress `bson:"progress" json:"progress"`
  24. TimePeriod [2]string `bson:"timePeriod" json:"timePeriod"`
  25. EnableEventAndAlarm bool `bson:"enableEventAndAlarm" json:"enableEventAndAlarm"`
  26. EnableCloudLog bool `bson:"enableCloudLog" json:"enableCloudLog"`
  27. EnableSiteLog bool `bson:"enableSiteLog" json:"enableSiteLog"`
  28. }
  29. // 从数据库获取站点分析列表
  30. func GetSiteAnalysisManageList() ([]SiteAnalysisInfo, error) {
  31. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  32. defer cancel()
  33. collection := database.GetCollection("SiteAnalysisConfig")
  34. cursor, err := collection.Find(ctx, bson.M{}, options.Find().SetProjection(bson.M{
  35. // 配置需要的字段
  36. "_id": 1, // (默认会返回)
  37. "sn": 1,
  38. "description": 1,
  39. "item": 1,
  40. "progress": 1,
  41. })) // 空条件,查全部
  42. if err != nil {
  43. return nil, err
  44. }
  45. defer cursor.Close(ctx)
  46. var configList []SiteAnalysisInfo
  47. for cursor.Next(ctx) {
  48. var cfg SiteAnalysisInfo
  49. if err := cursor.Decode(&cfg); err != nil {
  50. return nil, err
  51. }
  52. configList = append(configList, cfg)
  53. }
  54. return configList, nil
  55. }
  56. // 从数据库获取一条站点分析配置
  57. func GetSiteAnalysisConfig(id primitive.ObjectID) (*SitesMonitorConfig, error) {
  58. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  59. defer cancel()
  60. collection := database.GetCollection("SiteMonitorConfig")
  61. var cfg SitesMonitorConfig
  62. err := collection.FindOne(ctx, bson.M{"_id": id}).Decode(&cfg)
  63. if err != nil {
  64. return nil, err
  65. }
  66. return &cfg, nil
  67. }
  68. // 插入一条站点分析配置到数据库
  69. func InsertSiteAnalysisConfig(config SiteAnalysisConfig) error {
  70. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  71. defer cancel()
  72. collection := database.GetCollection("SiteMonitorConfig")
  73. // _, err := collection.InsertOne(ctx, config)
  74. filter := bson.M{"_id": config.Id} // 按用户名匹配
  75. update := bson.M{
  76. "$set": config, // 如果存在就更新所有字段
  77. }
  78. opts := options.Update().SetUpsert(true)
  79. _, err := collection.UpdateOne(ctx, filter, update, opts)
  80. if err != nil {
  81. return err
  82. }
  83. return nil
  84. }
  85. // 更新一条站点分析配置到数据库
  86. func UpdateSiteAnalysisConfig(id primitive.ObjectID, config SiteAnalysisConfig) error {
  87. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  88. defer cancel()
  89. collection := database.GetCollection("SiteMonitorConfig")
  90. // _, err := collection.InsertOne(ctx, config)
  91. filter := bson.M{"_id": id} // 按用户名匹配
  92. update := bson.M{
  93. "$set": config, // 如果存在就更新所有字段
  94. }
  95. opts := options.Update().SetUpsert(true)
  96. _, err := collection.UpdateOne(ctx, filter, update, opts)
  97. if err != nil {
  98. return err
  99. }
  100. return nil
  101. }
  102. // 删除一条站点分析配置
  103. func DeleteSiteAnalysisConfig(id primitive.ObjectID) error {
  104. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  105. defer cancel()
  106. filter := bson.M{"_id": id} // 删除条件
  107. collection := database.GetCollection("SiteMonitorConfig")
  108. _, err := collection.DeleteOne(ctx, filter)
  109. if err != nil {
  110. return err
  111. }
  112. return nil
  113. }