From e6438eaabeaca9ff197ffb64c3fdf6c256176ce0 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Wed, 3 Dec 2025 12:59:07 -0800 Subject: [PATCH] support series_slug filter in weapon_keys endpoint --- .../api/v1/weapon_keys_controller.rb | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/app/controllers/api/v1/weapon_keys_controller.rb b/app/controllers/api/v1/weapon_keys_controller.rb index cf885e9..c1bfbf1 100644 --- a/app/controllers/api/v1/weapon_keys_controller.rb +++ b/app/controllers/api/v1/weapon_keys_controller.rb @@ -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