From c9ba41a58e4010a62cc2d406d46dd849ed2b09ad Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Sun, 19 Jul 2020 03:56:59 +0000 Subject: [PATCH] Add additional search options --- app/models/artist_commentary_version.rb | 14 ++++++++++++++ app/models/artist_version.rb | 4 +++- app/models/forum_topic.rb | 2 ++ app/models/ip_ban.rb | 1 + app/models/moderation_report.rb | 1 + app/models/wiki_page_version.rb | 6 +++--- 6 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/models/artist_commentary_version.rb b/app/models/artist_commentary_version.rb index 32c59ac85..1bf34aa02 100644 --- a/app/models/artist_commentary_version.rb +++ b/app/models/artist_commentary_version.rb @@ -2,9 +2,23 @@ class ArtistCommentaryVersion < ApplicationRecord belongs_to :post belongs_to_updater + def self.text_matches(query) + query = "*#{query}*" unless query =~ /\*/ + + where_ilike(:original_title, query) + .or(where_ilike(:original_description, query)) + .or(where_ilike(:translated_title, query)) + .or(where_ilike(:translated_description, query)) + end + def self.search(params) q = super q = q.search_attributes(params, :original_title, :original_description, :translated_title, :translated_description) + + if params[:text_matches].present? + q = q.text_matches(params[:text_matches]) + end + q.apply_default_order(params) end diff --git a/app/models/artist_version.rb b/app/models/artist_version.rb index 529e8e4e6..19d608e6b 100644 --- a/app/models/artist_version.rb +++ b/app/models/artist_version.rb @@ -9,7 +9,9 @@ class ArtistVersion < ApplicationRecord def search(params) q = super - q = q.search_attributes(params, :is_deleted, :is_banned, :name, :group_name) + q = q.search_attributes(params, :is_deleted, :is_banned, :name, :group_name, :urls, :other_names) + q = q.text_attribute_matches(:name, params[:name_matches]) + q = q.text_attribute_matches(:group_name, params[:group_name_matches]) if params[:order] == "name" q = q.order("artist_versions.name").default_order diff --git a/app/models/forum_topic.rb b/app/models/forum_topic.rb index c9871859f..7daef04c4 100644 --- a/app/models/forum_topic.rb +++ b/app/models/forum_topic.rb @@ -113,6 +113,8 @@ class ForumTopic < ApplicationRecord case params[:order] when "sticky" q = q.sticky_first + when "id" + q = q.order(id: :desc) else q = q.apply_default_order(params) end diff --git a/app/models/ip_ban.rb b/app/models/ip_ban.rb index 4c4045c8f..266ff0ea0 100644 --- a/app/models/ip_ban.rb +++ b/app/models/ip_ban.rb @@ -27,6 +27,7 @@ class IpBan < ApplicationRecord def self.search(params) q = super q = q.search_attributes(params, :reason) + q = q.text_attribute_matches(:reason, params[:reason_matches]) if params[:ip_addr].present? q = q.where("ip_addr = ?", params[:ip_addr]) diff --git a/app/models/moderation_report.rb b/app/models/moderation_report.rb index dd22848c1..4fa1f77de 100644 --- a/app/models/moderation_report.rb +++ b/app/models/moderation_report.rb @@ -84,6 +84,7 @@ class ModerationReport < ApplicationRecord def self.search(params) q = super q = q.search_attributes(params, :reason) + q = q.text_attribute_matches(:reason, params[:reason_matches]) q.apply_default_order(params) end diff --git a/app/models/wiki_page_version.rb b/app/models/wiki_page_version.rb index 0b71a9501..b0687b191 100644 --- a/app/models/wiki_page_version.rb +++ b/app/models/wiki_page_version.rb @@ -9,9 +9,9 @@ class WikiPageVersion < ApplicationRecord def search(params) q = super - q = q.search_attributes(params, :is_locked, :is_deleted) - q = q.text_attribute_matches(:title, params[:title]) - q = q.text_attribute_matches(:body, params[:body]) + q = q.search_attributes(params, :title, :body, :other_names, :is_locked, :is_deleted) + q = q.text_attribute_matches(:title, params[:title_matches]) + q = q.text_attribute_matches(:body, params[:body_matches]) q.apply_default_order(params) end