version.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package task
  2. import (
  3. "dsbqj-admin/model/mongo/version"
  4. "dsbqj-admin/pkg/util"
  5. "github.com/kamva/mgm/v3"
  6. "go.mongodb.org/mongo-driver/bson"
  7. "sync"
  8. )
  9. var VersionTask *Versions
  10. type Versions struct {
  11. sync.Mutex
  12. VList util.SafeArray[*version.Version]
  13. VMap util.SafeMap[string, *version.Version]
  14. }
  15. func VersionInit() *Versions {
  16. VersionTask = new(Versions)
  17. return VersionTask
  18. }
  19. func (this *Versions) Exec() {
  20. var versions = make([]*version.Version, 0)
  21. err := mgm.Coll(&version.Version{}).SimpleFind(&versions, bson.M{})
  22. if err == nil {
  23. // 重置
  24. this.VList.Flush()
  25. this.VList.PushMany(versions)
  26. this.VMap.Clear()
  27. for _, v := range versions {
  28. this.VMap.Set(v.Version, v)
  29. }
  30. }
  31. }
  32. func (this *Versions) Check(version string) *version.Version {
  33. data, ok := this.VMap.Get(version)
  34. if !ok { // 遍历列表
  35. for _, v := range this.VList.View() {
  36. if v.Default {
  37. data = v
  38. break
  39. }
  40. }
  41. }
  42. return data
  43. }
  44. func (this *Versions) Servers() []*version.Version {
  45. return this.VList.View()
  46. }