You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

update_package_access_stat_amount.go 2.3 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package event
  2. import (
  3. "time"
  4. "github.com/samber/lo"
  5. "gitlink.org.cn/cloudream/common/pkgs/logger"
  6. scevt "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/mq/scanner/event"
  7. "gitlink.org.cn/cloudream/jcs-pub/scanner/internal/config"
  8. )
  9. type UpdatePackageAccessStatAmount struct {
  10. *scevt.UpdatePackageAccessStatAmount
  11. }
  12. func NewUpdatePackageAccessStatAmount(evt *scevt.UpdatePackageAccessStatAmount) *UpdatePackageAccessStatAmount {
  13. return &UpdatePackageAccessStatAmount{
  14. UpdatePackageAccessStatAmount: evt,
  15. }
  16. }
  17. func (t *UpdatePackageAccessStatAmount) TryMerge(other Event) bool {
  18. event, ok := other.(*UpdatePackageAccessStatAmount)
  19. if !ok {
  20. return false
  21. }
  22. if t.PackageIDs == nil {
  23. return true
  24. }
  25. if event.PackageIDs == nil {
  26. t.PackageIDs = nil
  27. return true
  28. }
  29. t.PackageIDs = append(t.PackageIDs, event.PackageIDs...)
  30. t.PackageIDs = lo.Uniq(t.PackageIDs)
  31. return true
  32. }
  33. func (t *UpdatePackageAccessStatAmount) Execute(execCtx ExecuteContext) {
  34. log := logger.WithType[UpdatePackageAccessStatAmount]("Event")
  35. startTime := time.Now()
  36. log.Debugf("begin with %v", logger.FormatStruct(t.UpdatePackageAccessStatAmount))
  37. defer func() {
  38. log.Debugf("end, time: %v", time.Since(startTime))
  39. }()
  40. if t.PackageIDs == nil {
  41. err := execCtx.Args.DB.PackageAccessStat().UpdateAllAmount(execCtx.Args.DB.DefCtx(), config.Cfg().AccessStatHistoryAmount)
  42. if err != nil {
  43. log.Warnf("update all package access stat amount: %v", err)
  44. return
  45. }
  46. err = execCtx.Args.DB.ObjectAccessStat().UpdateAllAmount(execCtx.Args.DB.DefCtx(), config.Cfg().AccessStatHistoryAmount)
  47. if err != nil {
  48. log.Warnf("update all object access stat amount: %v", err)
  49. return
  50. }
  51. } else {
  52. err := execCtx.Args.DB.PackageAccessStat().BatchUpdateAmount(execCtx.Args.DB.DefCtx(), t.PackageIDs, config.Cfg().AccessStatHistoryAmount)
  53. if err != nil {
  54. log.Warnf("batch update package access stat amount: %v", err)
  55. return
  56. }
  57. err = execCtx.Args.DB.ObjectAccessStat().BatchUpdateAmountInPackage(execCtx.Args.DB.DefCtx(), t.PackageIDs, config.Cfg().AccessStatHistoryAmount)
  58. if err != nil {
  59. log.Warnf("batch update object access stat amount in package: %v", err)
  60. return
  61. }
  62. }
  63. }
  64. func init() {
  65. RegisterMessageConvertor(NewUpdatePackageAccessStatAmount)
  66. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。