support series_slug filter in weapon_keys endpoint
This commit is contained in:
parent
97cb59894a
commit
e6438eaabe
1 changed files with 12 additions and 9 deletions
|
|
@ -4,17 +4,20 @@ module Api
|
|||
module V1
|
||||
class WeaponKeysController < Api::V1::ApiController
|
||||
def all
|
||||
conditions = {}.tap do |hash|
|
||||
hash[:series] = request.params['series'].to_i unless request.params['series'].blank?
|
||||
hash[:slot] = request.params['slot'].to_i unless request.params['slot'].blank?
|
||||
hash[:group] = request.params['group'].to_i unless request.params['group'].blank?
|
||||
weapon_keys = WeaponKey.all
|
||||
|
||||
# Filter by series - support both new slug-based and legacy integer-based filtering
|
||||
if request.params['series_slug'].present?
|
||||
series = WeaponSeries.find_by(slug: request.params['series_slug'])
|
||||
weapon_keys = weapon_keys.joins(:weapon_series).where(weapon_series: { id: series.id }) if series
|
||||
elsif request.params['series'].present?
|
||||
# Legacy integer support (will be deprecated)
|
||||
weapon_keys = weapon_keys.where('? = ANY(series)', request.params['series'].to_i)
|
||||
end
|
||||
|
||||
# Build the query based on the conditions
|
||||
weapon_keys = WeaponKey.all
|
||||
weapon_keys = weapon_keys.where('? = ANY(series)', conditions[:series]) if conditions.key?(:series)
|
||||
weapon_keys = weapon_keys.where(slot: conditions[:slot]) if conditions.key?(:slot)
|
||||
weapon_keys = weapon_keys.where(group: conditions[:group]) if conditions.key?(:group)
|
||||
# Filter by slot and group
|
||||
weapon_keys = weapon_keys.where(slot: request.params['slot'].to_i) if request.params['slot'].present?
|
||||
weapon_keys = weapon_keys.where(group: request.params['group'].to_i) if request.params['group'].present?
|
||||
|
||||
render json: WeaponKeyBlueprint.render(weapon_keys)
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue