Skip to content
Snippets Groups Projects
Commit 498327b2 authored by Akihiko Odaki's avatar Akihiko Odaki Committed by Eugen Rochko
Browse files

Exclude status itself from context query (#7083)

ancestor_statuses and descendant_statuses used to include the root status
itself, but the behavior is confusing because the root status is not
an ancestor nor descendant.
parent 0893b166
No related branches found
No related tags found
No related merge requests found
......@@ -15,16 +15,12 @@ module StatusThreadingConcern
def ancestor_ids
Rails.cache.fetch("ancestors:#{id}") do
ancestors_without_self.pluck(:id)
ancestor_statuses.pluck(:id)
end
end
def ancestors_without_self
ancestor_statuses - [self]
end
def ancestor_statuses
Status.find_by_sql([<<-SQL.squish, id: id])
Status.find_by_sql([<<-SQL.squish, id: in_reply_to_id])
WITH RECURSIVE search_tree(id, in_reply_to_id, path)
AS (
SELECT id, in_reply_to_id, ARRAY[id]
......@@ -43,11 +39,7 @@ module StatusThreadingConcern
end
def descendant_ids
descendants_without_self.pluck(:id)
end
def descendants_without_self
descendant_statuses - [self]
descendant_statuses.pluck(:id)
end
def descendant_statuses
......@@ -56,7 +48,7 @@ module StatusThreadingConcern
AS (
SELECT id, ARRAY[id]
FROM statuses
WHERE id = :id
WHERE in_reply_to_id = :id
UNION ALL
SELECT statuses.id, path || statuses.id
FROM search_tree
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment