tags: fix negative tag counts not being regenerated.

This commit is contained in:
evazion
2019-12-10 01:40:30 -06:00
parent 6196f7ba67
commit 6b165a90f8

View File

@@ -109,17 +109,16 @@ class Tag < ApplicationRecord
def regenerate_post_counts!
sql = <<~SQL
UPDATE tags
SET post_count = true_count
SET post_count = COALESCE(true_count, 0)
FROM (
SELECT tag, COUNT(*) AS true_count
FROM posts, unnest(string_to_array(tag_string, ' ')) AS tag
GROUP BY tag
) true_counts, tags AS old_tags
) true_counts
WHERE
tags.name = tag
AND tags.post_count != true_count
AND old_tags.id = tags.id
RETURNING tags.*, old_tags.post_count AS old_post_count
(tags.name = tag AND tags.post_count != true_count)
OR tags.post_count < 0
RETURNING tags.*
SQL
updated_tags = Tag.find_by_sql(sql)