From 75702ac4d2955cb8d61f4fdf10599c2fe576fed1 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Tue, 25 Jan 2022 17:02:08 -0800 Subject: [PATCH] Add exclusion for characters --- app/controllers/api/v1/search_controller.rb | 9 ++++++++- app/models/character.rb | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) 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 } }