From 5c526e5abbb697ab6763ee53ce1fafab9826b26c Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Thu, 30 May 2019 21:18:16 +0530 Subject: [PATCH] FEATURE: new rake task to watch all replied topics --- lib/tasks/topics.rake | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/tasks/topics.rake b/lib/tasks/topics.rake index 43b6a21b3db..f9c9264d035 100644 --- a/lib/tasks/topics.rake +++ b/lib/tasks/topics.rake @@ -66,3 +66,23 @@ task "topics:apply_autoclose" => :environment do puts "", "Done" end + +task "topics:watch_all_replied_topics" => :environment do + puts "Setting all topics to Watching on which a user has posted at least once..." + topics = Topic.where("archetype != ?", Archetype.private_message) + total = topics.count + count = 0 + + topics.find_each do |t| + t.topic_users.where(posted: true).find_each do |tp| + tp.update!(notification_level: TopicUser.notification_levels[:watching], notifications_reason_id: TopicUser.notification_reasons[:created_post]) + end + print_status(count += 1, total) + end + + puts "", "Done" +end + +def print_status(current, max) + print "\r%9d / %d (%5.1f%%)" % [current, max, ((current.to_f / max.to_f) * 100).round(1)] +end