mirror of
https://github.com/codeninjasllc/discourse.git
synced 2025-05-02 00:44:47 -04:00
better consistency check
This commit is contained in:
parent
9ad320768e
commit
73c508115a
2 changed files with 8 additions and 3 deletions
|
@ -180,16 +180,21 @@ class TopicUser < ActiveRecord::Base
|
||||||
UPDATE topic_users t
|
UPDATE topic_users t
|
||||||
SET
|
SET
|
||||||
last_read_post_number = last_read,
|
last_read_post_number = last_read,
|
||||||
seen_post_count = GREATEST(t.seen_post_count, last_read)
|
seen_post_count = LEAST(max_post_number,GREATEST(t.seen_post_count, last_read))
|
||||||
FROM (
|
FROM (
|
||||||
SELECT topic_id, user_id, MAX(post_number) last_read
|
SELECT topic_id, user_id, MAX(post_number) last_read
|
||||||
FROM post_timings
|
FROM post_timings
|
||||||
GROUP BY topic_id, user_id
|
GROUP BY topic_id, user_id
|
||||||
) as X
|
) as X
|
||||||
|
JOIN (
|
||||||
|
SELECT p.topic_id, MAX(p.post_number) max_post_number from posts p
|
||||||
|
GROUP BY p.topic_id
|
||||||
|
) as Y on Y.topic_id = X.topic_id
|
||||||
WHERE X.topic_id = t.topic_id AND
|
WHERE X.topic_id = t.topic_id AND
|
||||||
X.user_id = t.user_id AND
|
X.user_id = t.user_id AND
|
||||||
(
|
(
|
||||||
last_read_post_number <> last_read
|
last_read_post_number <> last_read OR
|
||||||
|
seen_post_count <> LEAST(max_post_number,GREATEST(t.seen_post_count, last_read))
|
||||||
)
|
)
|
||||||
SQL
|
SQL
|
||||||
end
|
end
|
||||||
|
|
|
@ -212,7 +212,7 @@ describe TopicUser do
|
||||||
p1 = Fabricate(:post)
|
p1 = Fabricate(:post)
|
||||||
p2 = Fabricate(:post, user: p1.user, topic: p1.topic, post_number: 2)
|
p2 = Fabricate(:post, user: p1.user, topic: p1.topic, post_number: 2)
|
||||||
|
|
||||||
TopicUser.exec_sql("UPDATE topic_users set seen_post_count=0, last_read_post_number=0
|
TopicUser.exec_sql("UPDATE topic_users set seen_post_count=100, last_read_post_number=0
|
||||||
WHERE topic_id = :topic_id AND user_id = :user_id", topic_id: p1.topic_id, user_id: p1.user_id)
|
WHERE topic_id = :topic_id AND user_id = :user_id", topic_id: p1.topic_id, user_id: p1.user_id)
|
||||||
|
|
||||||
[p1,p2].each do |p|
|
[p1,p2].each do |p|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue