Files
danbooru/script/fixes/087_fix_post_fav_counts.rb
evazion 85e1ae3c9b favorites: fix posts with incorrect fav_count fields.
There were about 4000 posts with an incorrect fav_count.
2022-01-09 19:31:45 -06:00

27 lines
742 B
Ruby
Executable File

#!/usr/bin/env ruby
require_relative "base"
with_confirmation do
# Fix posts that have a non-zero fav_count but no favorites.
records = Post.where("fav_count != 0").where.not(id: Favorite.select(:post_id).distinct)
puts "Fixing #{records.size} records"
records.update_all(fav_count: 0)
end
with_confirmation do
# Fix posts that have a fav_count inconsistent with the favorites table.
records = Post.find_by_sql(<<~SQL.squish)
UPDATE posts
SET fav_count = true_count
FROM (
SELECT post_id, COUNT(*) AS true_count
FROM favorites
GROUP BY post_id
) true_counts
WHERE posts.id = post_id AND posts.fav_count != true_count
RETURNING posts.*
SQL
puts "Fixing #{records.size} records"
end