FEATURE: in:tagged search (srv side) (#7822)
* FEATURE: in:tagged and in:untagged advanced search filters Similar to in:solved or in:unsolved, the filters check for an existence of the topic_id in the topic_tags table. see: https://meta.discourse.org/t/how-to-search-filter-untagged-topics/119641/2
This commit is contained in:
parent
61438c825a
commit
6c5689984f
|
@ -265,6 +265,18 @@ class Search
|
|||
@advanced_filters
|
||||
end
|
||||
|
||||
advanced_filter(/^in:tagged$/) do |posts|
|
||||
posts
|
||||
.where('EXISTS (SELECT 1 FROM topic_tags WHERE topic_tags.topic_id = posts.topic_id)')
|
||||
end
|
||||
|
||||
advanced_filter(/^in:untagged$/) do |posts|
|
||||
posts
|
||||
.joins("LEFT JOIN topic_tags ON
|
||||
topic_tags.topic_id = posts.topic_id")
|
||||
.where("topic_tags.id IS NULL")
|
||||
end
|
||||
|
||||
advanced_filter(/^status:open$/) do |posts|
|
||||
posts.where('NOT topics.closed AND NOT topics.archived')
|
||||
end
|
||||
|
|
|
@ -1377,4 +1377,32 @@ describe Search do
|
|||
|
||||
end
|
||||
|
||||
context 'in:tagged' do
|
||||
it 'allows for searching by presence of any tags' do
|
||||
topic = Fabricate(:topic, title: 'I am testing a tagged search')
|
||||
_post = Fabricate(:post, topic: topic, raw: 'this is the first post')
|
||||
tag = Fabricate(:tag)
|
||||
topic_tag = Fabricate(:topic_tag, topic: topic, tag: tag)
|
||||
|
||||
results = Search.execute('in:untagged')
|
||||
expect(results.posts.length).to eq(0)
|
||||
|
||||
results = Search.execute('in:tagged')
|
||||
expect(results.posts.length).to eq(1)
|
||||
end
|
||||
end
|
||||
|
||||
context 'in:untagged' do
|
||||
it 'allows for searching by presence of no tags' do
|
||||
topic = Fabricate(:topic, title: 'I am testing a untagged search')
|
||||
_post = Fabricate(:post, topic: topic, raw: 'this is the first post')
|
||||
|
||||
results = Search.execute('in:untagged')
|
||||
expect(results.posts.length).to eq(1)
|
||||
|
||||
results = Search.execute('in:tagged')
|
||||
expect(results.posts.length).to eq(0)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue