diff --git a/app/controllers/api/v1/search_controller.rb b/app/controllers/api/v1/search_controller.rb index 687aab8..f371f08 100644 --- a/app/controllers/api/v1/search_controller.rb +++ b/app/controllers/api/v1/search_controller.rb @@ -1,7 +1,13 @@ class Api::V1::SearchController < Api::V1::ApiController def characters if params[:query].present? - @characters = Character.search(params[:query]).limit(10) + excludes = params[:excludes] ? + params[:excludes].split(',').map { |e| "%#{e.gsub(/\([^()]*\)/, '').strip}%" } : '' + + ap excludes + + @characters = Character.where("name_en ILIKE ? AND name_en NOT ILIKE ALL(ARRAY[?])", "%#{params[:query]}%", excludes).limit(10) + # @characters = Character.search(query).limit(10) else @characters = Character.all end @@ -17,6 +23,7 @@ class Api::V1::SearchController < Api::V1::ApiController def summons if params[:query].present? + excludes = params[:excludes] ? params[:excludes].split(',').each { |e| "!#{e}" }.join(' ') : '' @summons = Summon.search(params[:query]).limit(10) else @summons = Summon.all diff --git a/app/models/character.rb b/app/models/character.rb index 2ea4f37..7cbd750 100644 --- a/app/models/character.rb +++ b/app/models/character.rb @@ -5,6 +5,7 @@ class Character < ApplicationRecord against: [:name_en, :name_jp], using: { tsearch: { + negation: true, prefix: true } }