search: reduce queries in single tag searches (#4120).

Avoid some queries used in wiki page excerpts:

* Only try to load the artist if the tag is an artist tag.
* Avoid using `exists?` queries for wiki pages.
* Bugfix: don't show wiki excerpts for deleted wikis.
This commit is contained in:
evazion
2019-08-12 13:38:45 -05:00
parent bda69315ff
commit 14da425564
4 changed files with 11 additions and 31 deletions

View File

@@ -1,9 +1,5 @@
module PostSets
class Base
def has_wiki?
false
end
def raw
false
end
@@ -12,10 +8,6 @@ module PostSets
nil
end
def has_artist?
false
end
def artist
nil
end

View File

@@ -25,24 +25,14 @@ module PostSets
tag_array.reject {|tag| tag =~ /\Aorder:/i }
end
def has_wiki?
is_single_tag? && ::WikiPage.titled(tag_string).exists? && wiki_page.visible?
end
def has_wiki_text?
has_wiki? && wiki_page.body.present?
end
def has_blank_wiki?
is_simple_tag? && !has_wiki?
tag.present? && !wiki_page.present?
end
def wiki_page
if is_single_tag?
::WikiPage.titled(tag_string).first
else
nil
end
return nil unless tag.present? && tag.wiki_page.present?
return nil unless !tag.wiki_page.is_deleted? && tag.wiki_page.visible?
tag.wiki_page
end
def tag
@@ -50,12 +40,10 @@ module PostSets
@tag ||= Tag.find_by(name: Tag.normalize_name(tag_string))
end
def has_artist?
is_single_tag? && artist.present? && artist.visible?
end
def artist
@artist ||= ::Artist.named(tag_string).active.first
return nil unless tag.present? && tag.category == Tag.categories.artist
return nil unless tag.artist.present? && tag.artist.is_active? && tag.artist.visible?
tag.artist
end
def pool_name