search: clean up saved search: metatag.

* Fix not being able to negate the search: metatag.
* Fix not being able to use the search: metatag twice in the same search.
This commit is contained in:
evazion
2020-04-20 22:12:00 -05:00
parent f6fb3c0169
commit 6eb98c6572
3 changed files with 41 additions and 49 deletions

View File

@@ -38,6 +38,7 @@ class PostQueryBuilder
-filetype filetype
-disapproved disapproved
-parent parent
-search search
md5
width
height
@@ -53,7 +54,6 @@ class PostQueryBuilder
tagcount
child
pixiv_id pixiv
search
embedded
] + TagCategory.short_name_list.map {|x| "#{x}tags"} + COUNT_METATAGS + COUNT_METATAG_SYNONYMS
@@ -156,19 +156,13 @@ class PostQueryBuilder
relation
end
def add_saved_search_relation(saved_searches, relation)
saved_searches.each do |saved_search|
if saved_search == "all"
post_ids = SavedSearch.post_ids_for(CurrentUser.id)
else
post_ids = SavedSearch.post_ids_for(CurrentUser.id, label: saved_search)
end
post_ids = [0] if post_ids.empty?
relation = relation.where("posts.id": post_ids)
def saved_search_matches(label)
case label.downcase
when "all"
Post.where(id: SavedSearch.post_ids_for(CurrentUser.id))
else
Post.where(id: SavedSearch.post_ids_for(CurrentUser.id, label: label))
end
relation
end
def status_matches(status)
@@ -348,8 +342,12 @@ class PostQueryBuilder
relation = relation.merge(commentary_matches(query))
end
if q[:saved_searches]
relation = add_saved_search_relation(q[:saved_searches], relation)
q[:saved_searches_neg].to_a.each do |query|
relation = relation.merge(saved_search_matches(query).negate)
end
q[:saved_searches].to_a.each do |query|
relation = relation.merge(saved_search_matches(query))
end
q[:user_neg].to_a.each do |username|
@@ -886,6 +884,10 @@ class PostQueryBuilder
q[:commentary] ||= []
q[:commentary] << g2
when "-search"
q[:saved_searches_neg] ||= []
q[:saved_searches_neg] << g2
when "search"
q[:saved_searches] ||= []
q[:saved_searches] << g2