From e6c02bee053ebd98c820debc016698d2b16f2cb4 Mon Sep 17 00:00:00 2001 From: nyne Date: Sun, 13 Jul 2025 19:15:37 +0800 Subject: [PATCH] Add logic to skip duplicate resource update activities within 10 minutes --- server/dao/activity.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/server/dao/activity.go b/server/dao/activity.go index 5b992c5..c1a4cd3 100644 --- a/server/dao/activity.go +++ b/server/dao/activity.go @@ -1,6 +1,11 @@ package dao -import "nysoure/server/model" +import ( + "errors" + "gorm.io/gorm" + "nysoure/server/model" + "time" +) func AddNewResourceActivity(userID, resourceID uint) error { activity := &model.Activity{ @@ -12,6 +17,19 @@ func AddNewResourceActivity(userID, resourceID uint) error { } func AddUpdateResourceActivity(userID, resourceID uint) error { + var userLastActivity model.Activity + if err := db.Model(&userLastActivity).Where("user_id = ?", userID).First(&userLastActivity).Error; err != nil { + if !errors.Is(err, gorm.ErrRecordNotFound) { + return err + } + } + if userLastActivity.Type == model.ActivityTypeUpdateResource && userLastActivity.RefID == resourceID { + if time.Since(userLastActivity.CreatedAt) < 10*time.Minute { + // If the last activity is an update to the same resource within 10 minutes, skip creating a new activity + return nil + } + } + activity := &model.Activity{ UserID: userID, Type: model.ActivityTypeUpdateResource,