discourse/app/jobs/onceoff/fix_posts_read.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

24 lines
564 B
Ruby

# frozen_string_literal: true
module Jobs
class FixPostsRead < Jobs::Onceoff
def execute_onceoff(args)
# Skipping to the last post in a topic used to count all posts in the topic
# as read in user stats. Cap the posts read count to 50 * topics_entered.
sql = <<~SQL
UPDATE user_stats
SET posts_read_count = topics_entered * 50
WHERE user_id IN (
SELECT us2.user_id
FROM user_stats us2
WHERE us2.topics_entered > 0
AND us2.posts_read_count / us2.topics_entered > 50
)
SQL
DB.exec(sql)
end
end
end