|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package event
-
- import (
- "time"
-
- "github.com/samber/lo"
- "gitlink.org.cn/cloudream/common/pkgs/logger"
- scevt "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/mq/scanner/event"
- "gitlink.org.cn/cloudream/jcs-pub/scanner/internal/config"
- )
-
- type UpdatePackageAccessStatAmount struct {
- *scevt.UpdatePackageAccessStatAmount
- }
-
- func NewUpdatePackageAccessStatAmount(evt *scevt.UpdatePackageAccessStatAmount) *UpdatePackageAccessStatAmount {
- return &UpdatePackageAccessStatAmount{
- UpdatePackageAccessStatAmount: evt,
- }
- }
-
- func (t *UpdatePackageAccessStatAmount) TryMerge(other Event) bool {
- event, ok := other.(*UpdatePackageAccessStatAmount)
- if !ok {
- return false
- }
-
- if t.PackageIDs == nil {
- return true
- }
-
- if event.PackageIDs == nil {
- t.PackageIDs = nil
- return true
- }
-
- t.PackageIDs = append(t.PackageIDs, event.PackageIDs...)
- t.PackageIDs = lo.Uniq(t.PackageIDs)
- return true
- }
-
- func (t *UpdatePackageAccessStatAmount) Execute(execCtx ExecuteContext) {
- log := logger.WithType[UpdatePackageAccessStatAmount]("Event")
- startTime := time.Now()
- log.Debugf("begin with %v", logger.FormatStruct(t.UpdatePackageAccessStatAmount))
- defer func() {
- log.Debugf("end, time: %v", time.Since(startTime))
- }()
-
- if t.PackageIDs == nil {
- err := execCtx.Args.DB.PackageAccessStat().UpdateAllAmount(execCtx.Args.DB.DefCtx(), config.Cfg().AccessStatHistoryAmount)
- if err != nil {
- log.Warnf("update all package access stat amount: %v", err)
- return
- }
-
- err = execCtx.Args.DB.ObjectAccessStat().UpdateAllAmount(execCtx.Args.DB.DefCtx(), config.Cfg().AccessStatHistoryAmount)
- if err != nil {
- log.Warnf("update all object access stat amount: %v", err)
- return
- }
-
- } else {
- err := execCtx.Args.DB.PackageAccessStat().BatchUpdateAmount(execCtx.Args.DB.DefCtx(), t.PackageIDs, config.Cfg().AccessStatHistoryAmount)
- if err != nil {
- log.Warnf("batch update package access stat amount: %v", err)
- return
- }
-
- err = execCtx.Args.DB.ObjectAccessStat().BatchUpdateAmountInPackage(execCtx.Args.DB.DefCtx(), t.PackageIDs, config.Cfg().AccessStatHistoryAmount)
- if err != nil {
- log.Warnf("batch update object access stat amount in package: %v", err)
- return
- }
- }
- }
-
- func init() {
- RegisterMessageConvertor(NewUpdatePackageAccessStatAmount)
- }
|