Add filtering to weapon search

This commit is contained in:
Justin Edmund 2022-03-09 11:02:12 -08:00
parent 29b533d104
commit 14260e4ce0

View file

@ -1,13 +1,13 @@
class Api::V1::SearchController < Api::V1::ApiController class Api::V1::SearchController < Api::V1::ApiController
def characters def characters
locale = params[:locale] || 'en' locale = search_params[:locale] || 'en'
if params[:query].present? if search_params[:query].present?
if locale == 'ja' if locale == 'ja'
@characters = Character.jp_search(params[:query]).limit(10) @characters = Character.jp_search(search_params[:query]).limit(10)
else else
# @characters = Character.where("name_en ILIKE ? AND name_en NOT ILIKE ALL(ARRAY[?])", "%#{params[:query]}%", excludes).limit(10) # @characters = Character.where("name_en ILIKE ? AND name_en NOT ILIKE ALL(ARRAY[?])", "%#{params[:query]}%", excludes).limit(10)
@characters = Character.en_search(params[:query]).limit(10) @characters = Character.en_search(search_params[:query]).limit(10)
end end
else else
@characters = Character.all @characters = Character.all
@ -15,30 +15,46 @@ class Api::V1::SearchController < Api::V1::ApiController
end end
def weapons def weapons
locale = params[:locale] || 'en' filters = search_params[:filters]
locale = search_params[:locale] || 'en'
if params[:query].present? conditions = {}
conditions[:rarity] = filters['rarity'] unless filters['rarity'].blank? || filters['rarity'].empty?
conditions[:element] = filters['element'] unless filters['element'].blank? || filters['element'].empty?
conditions[:proficiency] = filters['proficiency'] unless filters['proficiency'].blank? || filters['proficiency'].empty?
conditions[:series] = filters['series'] unless filters['series'].blank? || filters['series'].empty?
ap conditions
if search_params[:query].present?
if locale == 'ja' if locale == 'ja'
@weapons = Weapon.jp_search(params[:query]).limit(10) @weapons = Weapon.jp_search(search_params[:query]).where(conditions).limit(10)
else else
@weapons = Weapon.en_search(params[:query]).limit(10) @weapons = Weapon.en_search(search_params[:query]).where(conditions).limit(10)
end end
else else
@weapons = Weapon.all @weapons = Weapon.where(conditions).limit(10) # Temporary limit before pagination
end end
end end
def summons def summons
locale = params[:locale] || 'en' locale = search_params[:locale] || 'en'
if params[:query].present? if search_params[:query].present?
if locale == 'ja' if locale == 'ja'
@summons = Summon.jp_search(params[:query]).limit(10) @summons = Summon.jp_search(search_params[:query]).limit(10)
else else
@summons = Summon.en_search(params[:query]).limit(10) @summons = Summon.en_search(search_params[:query]).limit(10)
end end
else else
@summons = Summon.all @summons = Summon.all
end end
end end
private
# Specify whitelisted properties that can be modified.
def search_params
params.require(:search).permit!
end
end end