diff --git a/common/pkgs/db/object_access_stat.go b/common/pkgs/db/object_access_stat.go index 3fbd0cc..46f9544 100644 --- a/common/pkgs/db/object_access_stat.go +++ b/common/pkgs/db/object_access_stat.go @@ -35,8 +35,11 @@ func (*ObjectAccessStatDB) BatchAddCounter(ctx SQLContext, entries []coormq.AddA return err } -func (*ObjectAccessStatDB) BatchUpdateAmount(ctx SQLContext, objIDs []cdssdk.ObjectID, historyWeight float64) error { - stmt, args, err := sqlx.In("update ObjectAccessStat set Amount=Amount*?+Counter*(1-?), Counter = 0 where ObjectID in (?)", historyWeight, historyWeight, objIDs) +func (*ObjectAccessStatDB) BatchUpdateAmountInPackage(ctx SQLContext, pkgIDs []cdssdk.PackageID, historyWeight float64) error { + stmt, args, err := sqlx.In("update ObjectAccessStat inner join Object"+ + " on ObjectAccessStat.ObjectID = Object.ObjectID"+ + " set Amount=Amount*?+Counter*(1-?), Counter = 0"+ + " where PackageID in (?)", historyWeight, historyWeight, pkgIDs) if err != nil { return err } diff --git a/scanner/internal/event/update_package_access_stat_amount.go b/scanner/internal/event/update_package_access_stat_amount.go index b2346dd..072e9c6 100644 --- a/scanner/internal/event/update_package_access_stat_amount.go +++ b/scanner/internal/event/update_package_access_stat_amount.go @@ -54,12 +54,24 @@ func (t *UpdatePackageAccessStatAmount) Execute(execCtx ExecuteContext) { return } + err = execCtx.Args.DB.ObjectAccessStat().UpdateAllAmount(execCtx.Args.DB.SQLCtx(), 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.SQLCtx(), 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.SQLCtx(), t.PackageIDs, config.Cfg().AccessStatHistoryAmount) + if err != nil { + log.Warnf("batch update object access stat amount in package: %v", err) + return + } } }