Commit b11e1190317737da76e080077033a8eb9559535a
Committed by
Antonio Terceiro
1 parent
7060c597
Exists in
master
and in
28 other branches
NotifyJob executes sql to be faster
(ActionItem1703)
Showing
1 changed file
with
6 additions
and
10 deletions
Show diff stats
lib/notify_activity_to_profiles_job.rb
... | ... | @@ -12,21 +12,17 @@ class NotifyActivityToProfilesJob < Struct.new(:tracked_action_id) |
12 | 12 | tracked_action = ActionTracker::Record.find(tracked_action_id) |
13 | 13 | target = tracked_action.target |
14 | 14 | if target.is_a?(Community) && NOTIFY_ONLY_COMMUNITY.include?(tracked_action.verb) |
15 | - ActionTrackerNotification.create(:action_tracker => tracked_action, :profile => target) | |
15 | + ActionTrackerNotification.connection.execute("insert into action_tracker_notifications(profile_id, action_tracker_id) values (#{target.id}, #{tracked_action.id})") | |
16 | 16 | return |
17 | 17 | end |
18 | 18 | |
19 | - ActionTrackerNotification.create(:action_tracker => tracked_action, :profile => tracked_action.user) | |
20 | - tracked_action.user.each_friend do |friend| | |
21 | - ActionTrackerNotification.create(:action_tracker => tracked_action, :profile => friend) | |
22 | - end | |
19 | + ActionTrackerNotification.connection.execute("insert into action_tracker_notifications(profile_id, action_tracker_id) values (#{tracked_action.user.id}, #{tracked_action.id})") | |
20 | + ActionTrackerNotification.connection.execute("insert into action_tracker_notifications(profile_id, action_tracker_id) select friend_id, #{tracked_action_id} from friendships where person_id=#{tracked_action.user.id}") | |
23 | 21 | |
24 | 22 | if target.is_a?(Community) |
25 | - target.each_member do |member| | |
26 | - next if member == tracked_action.user | |
27 | - ActionTrackerNotification.create(:action_tracker => tracked_action, :profile => member) | |
28 | - end | |
29 | - ActionTrackerNotification.create(:action_tracker => tracked_action, :profile => target) unless NOT_NOTIFY_COMMUNITY.include?(tracked_action.verb) | |
23 | + ActionTrackerNotification.connection.execute("insert into action_tracker_notifications(profile_id, action_tracker_id) select distinct profiles.id, #{tracked_action_id} from role_assignments, profiles where profiles.type = 'Person' and profiles.id = role_assignments.accessor_id and profiles.id != #{tracked_action.user.id} and role_assignments.resource_type = 'Profile' and role_assignments.resource_id = #{target.id}") | |
24 | + | |
25 | + ActionTrackerNotification.connection.execute("insert into action_tracker_notifications(profile_id, action_tracker_id) values (#{target.id}, #{tracked_action_id})") unless NOT_NOTIFY_COMMUNITY.include?(tracked_action.verb) | |
30 | 26 | end |
31 | 27 | end |
32 | 28 | end | ... | ... |