discourse/app/jobs/onceoff/clean_up_post_timings.rb
2023-01-09 14:14:59 +00:00

31 lines
759 B
Ruby

# frozen_string_literal: true
module Jobs
class CleanUpPostTimings < ::Jobs::Onceoff
# Remove post timings that are remnants of previous post moves
# or other shenanigans and don't reference a valid user or post anymore.
def execute_onceoff(args)
DB.exec <<~SQL
DELETE
FROM post_timings pt
WHERE NOT EXISTS(
SELECT 1
FROM posts p
WHERE p.topic_id = pt.topic_id
AND p.post_number = pt.post_number
)
SQL
DB.exec <<~SQL
DELETE
FROM post_timings pt
WHERE NOT EXISTS(
SELECT 1
FROM users u
WHERE pt.user_id = u.id
)
SQL
end
end
end