canvas-lms/lib/data_fixup/exclude_deleted_entries_fro...

18 lines
793 B
Ruby

module DataFixup::ExcludeDeletedEntriesFromUnreadCount
def self.run
# Deleted all partipant entries for deleted discussion entries
DiscussionEntryParticipant.
joins(:discussion_entry).preload(:discussion_entry).readonly(false).
where(:discussion_entries => { :workflow_state => 'deleted' }).
destroy_all
# Recalculate counts based on active entries minus read entries
DiscussionTopicParticipant.preload(:discussion_topic).find_each do |participant|
topic = participant.discussion_topic
read_count = topic.discussion_entry_participants.where(:user_id => participant.user_id, :workflow_state => "read").count
participant.unread_entry_count = topic.discussion_entries.active.count - read_count
participant.save
end
end
end