diff --git a/app/controllers/api/v1/search_controller.rb b/app/controllers/api/v1/search_controller.rb index 99d4f2d..f3230a7 100644 --- a/app/controllers/api/v1/search_controller.rb +++ b/app/controllers/api/v1/search_controller.rb @@ -1,54 +1,79 @@ class Api::V1::SearchController < Api::V1::ApiController def characters + filters = search_params[:filters] locale = search_params[:locale] || 'en' + conditions = {} - if search_params[:query].present? - if locale == 'ja' - @characters = Character.jp_search(search_params[:query]).limit(10) - else - # @characters = Character.where("name_en ILIKE ? AND name_en NOT ILIKE ALL(ARRAY[?])", "%#{params[:query]}%", excludes).limit(10) - @characters = Character.en_search(search_params[:query]).limit(10) - end - else - @characters = Character.all + if filters + conditions[:rarity] = filters['rarity'] unless filters['rarity'].blank? || filters['rarity'].empty? + conditions[:element] = filters['element'] unless filters['element'].blank? || filters['element'].empty? + conditions[:proficiency1] = filters['proficiency1'] unless filters['proficiency1'].blank? || filters['proficiency1'].empty? + conditions[:proficiency2] = filters['proficiency2'] unless filters['proficiency2'].blank? || filters['proficiency2'].empty? + # conditions[:series] = filters['series'] unless filters['series'].blank? || filters['series'].empty? end + + if search_params[:query].present? && search_params[:query].length >= 2 + if locale == 'ja' + @characters = Character.jp_search(search_params[:query]).where(conditions) + else + @characters = Character.en_search(search_params[:query]).where(conditions) + end + else + @characters = Character.where(conditions) + end + + @count = @characters.length + @characters = @characters.paginate(page: search_params[:page], per_page: 10) end def weapons filters = search_params[:filters] locale = search_params[:locale] || 'en' - 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 filters + 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['proficiency1'] unless filters['proficiency1'].blank? || filters['proficiency1'].empty? + conditions[:series] = filters['series'] unless filters['series'].blank? || filters['series'].empty? + end - if search_params[:query].present? + if search_params[:query].present? && search_params[:query].length >= 2 if locale == 'ja' - @weapons = Weapon.jp_search(search_params[:query]).where(conditions).limit(10) + @weapons = Weapon.jp_search(search_params[:query]).where(conditions) else - @weapons = Weapon.en_search(search_params[:query]).where(conditions).limit(10) + @weapons = Weapon.en_search(search_params[:query]).where(conditions) end else - @weapons = Weapon.where(conditions).limit(10) # Temporary limit before pagination + @weapons = Weapon.where(conditions) end + + @count = @weapons.length + @weapons = @weapons.paginate(page: search_params[:page], per_page: 10) end def summons + filters = search_params[:filters] locale = search_params[:locale] || 'en' + conditions = {} - if search_params[:query].present? - if locale == 'ja' - @summons = Summon.jp_search(search_params[:query]).limit(10) - else - @summons = Summon.en_search(search_params[:query]).limit(10) - end - else - @summons = Summon.all + if filters + conditions[:rarity] = filters['rarity'] unless filters['rarity'].blank? || filters['rarity'].empty? + conditions[:element] = filters['element'] unless filters['element'].blank? || filters['element'].empty? end + + if search_params[:query].present? && search_params[:query].length >= 2 + if locale == 'ja' + @summons = Summon.jp_search(search_params[:query]).where(conditions) + else + @summons = Summon.en_search(search_params[:query]).where(conditions) + end + else + @summons = Summon.where(conditions) + end + + @count = @summons.length + @summons = @summons.paginate(page: search_params[:page], per_page: 10) end private