diff options
Diffstat (limited to 'app/workers/users/track_namespace_visits_worker.rb')
-rw-r--r-- | app/workers/users/track_namespace_visits_worker.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/app/workers/users/track_namespace_visits_worker.rb b/app/workers/users/track_namespace_visits_worker.rb new file mode 100644 index 00000000000..5b2a7b7d0fa --- /dev/null +++ b/app/workers/users/track_namespace_visits_worker.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +module Users + class TrackNamespaceVisitsWorker + include ApplicationWorker + + feature_category :navigation + data_consistency :delayed + urgency :throttled + idempotent! + + GROUPS = 'groups' + PROJECTS = 'projects' + + def perform(entity_type, entity_id, user_id, time) + return unless entity_id && user_id + + case entity_type + when GROUPS + unless GroupVisit.visited_around?(entity_id: entity_id, user_id: user_id, time: time) + GroupVisit.create!(entity_id: entity_id, user_id: user_id, visited_at: time) + end + when PROJECTS + unless ProjectVisit.visited_around?(entity_id: entity_id, user_id: user_id, time: time) + ProjectVisit.create!(entity_id: entity_id, user_id: user_id, visited_at: time) + end + end + end + end +end |