fix collection filters to support comma-separated array params
This commit is contained in:
parent
693962ce3b
commit
5da86c5405
4 changed files with 34 additions and 15 deletions
|
|
@ -15,10 +15,11 @@ module Api
|
|||
def index
|
||||
@collection_artifacts = @target_user.collection_artifacts.includes(:artifact)
|
||||
|
||||
# Apply filters (array_param splits comma-separated values for OR logic)
|
||||
@collection_artifacts = @collection_artifacts.where(artifact_id: params[:artifact_id]) if params[:artifact_id]
|
||||
@collection_artifacts = @collection_artifacts.where(element: params[:element]) if params[:element]
|
||||
@collection_artifacts = @collection_artifacts.by_proficiency(params[:proficiency]) if params[:proficiency].present?
|
||||
@collection_artifacts = @collection_artifacts.joins(:artifact).where(artifacts: { rarity: params[:rarity] }) if params[:rarity]
|
||||
@collection_artifacts = @collection_artifacts.where(element: array_param(:element)) if params[:element]
|
||||
@collection_artifacts = @collection_artifacts.by_proficiency(array_param(:proficiency)) if params[:proficiency].present?
|
||||
@collection_artifacts = @collection_artifacts.joins(:artifact).where(artifacts: { rarity: array_param(:rarity) }) if params[:rarity]
|
||||
|
||||
# Skill filters - each slot uses OR logic, slots combined with AND logic
|
||||
@collection_artifacts = @collection_artifacts.with_skill_in_slot(1, params[:skill1]) if params[:skill1].present?
|
||||
|
|
@ -203,6 +204,10 @@ module Api
|
|||
def batch_destroy_params
|
||||
params.permit(ids: [])
|
||||
end
|
||||
|
||||
def array_param(key)
|
||||
params[key]&.to_s&.split(',')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -14,12 +14,12 @@ module Api
|
|||
@collection_characters = @target_user.collection_characters
|
||||
.includes(:character, :awakening)
|
||||
|
||||
# Apply filters
|
||||
@collection_characters = @collection_characters.by_element(params[:element]) if params[:element]
|
||||
@collection_characters = @collection_characters.by_rarity(params[:rarity]) if params[:rarity]
|
||||
@collection_characters = @collection_characters.by_race(params[:race]) if params[:race]
|
||||
@collection_characters = @collection_characters.by_proficiency(params[:proficiency]) if params[:proficiency]
|
||||
@collection_characters = @collection_characters.by_gender(params[:gender]) if params[:gender]
|
||||
# Apply filters (array_param splits comma-separated values for OR logic)
|
||||
@collection_characters = @collection_characters.by_element(array_param(:element)) if params[:element]
|
||||
@collection_characters = @collection_characters.by_rarity(array_param(:rarity)) if params[:rarity]
|
||||
@collection_characters = @collection_characters.by_race(array_param(:race)) if params[:race]
|
||||
@collection_characters = @collection_characters.by_proficiency(array_param(:proficiency)) if params[:proficiency]
|
||||
@collection_characters = @collection_characters.by_gender(array_param(:gender)) if params[:gender]
|
||||
|
||||
# Apply sorting
|
||||
@collection_characters = @collection_characters.sorted_by(params[:sort])
|
||||
|
|
@ -216,6 +216,10 @@ module Api
|
|||
def batch_destroy_params
|
||||
params.permit(ids: [])
|
||||
end
|
||||
|
||||
def array_param(key)
|
||||
params[key]&.to_s&.split(',')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -14,9 +14,10 @@ module Api
|
|||
@collection_summons = @target_user.collection_summons
|
||||
.includes(:summon)
|
||||
|
||||
# Apply filters (array_param splits comma-separated values for OR logic)
|
||||
@collection_summons = @collection_summons.by_summon(params[:summon_id]) if params[:summon_id]
|
||||
@collection_summons = @collection_summons.by_element(params[:element]) if params[:element]
|
||||
@collection_summons = @collection_summons.by_rarity(params[:rarity]) if params[:rarity]
|
||||
@collection_summons = @collection_summons.by_element(array_param(:element)) if params[:element]
|
||||
@collection_summons = @collection_summons.by_rarity(array_param(:rarity)) if params[:rarity]
|
||||
|
||||
@collection_summons = @collection_summons.paginate(page: params[:page], per_page: params[:limit] || 50)
|
||||
|
||||
|
|
@ -187,6 +188,10 @@ module Api
|
|||
def batch_destroy_params
|
||||
params.permit(ids: [])
|
||||
end
|
||||
|
||||
def array_param(key)
|
||||
params[key]&.to_s&.split(',')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -16,11 +16,12 @@ module Api
|
|||
:weapon_key1, :weapon_key2,
|
||||
:weapon_key3, :weapon_key4)
|
||||
|
||||
# Apply filters (array_param splits comma-separated values for OR logic)
|
||||
@collection_weapons = @collection_weapons.by_weapon(params[:weapon_id]) if params[:weapon_id]
|
||||
@collection_weapons = @collection_weapons.by_element(params[:element]) if params[:element]
|
||||
@collection_weapons = @collection_weapons.by_rarity(params[:rarity]) if params[:rarity]
|
||||
@collection_weapons = @collection_weapons.by_proficiency(params[:proficiency]) if params[:proficiency]
|
||||
@collection_weapons = @collection_weapons.by_series(params[:series]) if params[:series]
|
||||
@collection_weapons = @collection_weapons.by_element(array_param(:element)) if params[:element]
|
||||
@collection_weapons = @collection_weapons.by_rarity(array_param(:rarity)) if params[:rarity]
|
||||
@collection_weapons = @collection_weapons.by_proficiency(array_param(:proficiency)) if params[:proficiency]
|
||||
@collection_weapons = @collection_weapons.by_series(array_param(:series)) if params[:series]
|
||||
|
||||
@collection_weapons = @collection_weapons.sorted_by(params[:sort])
|
||||
|
||||
|
|
@ -201,6 +202,10 @@ module Api
|
|||
def batch_destroy_params
|
||||
params.permit(ids: [])
|
||||
end
|
||||
|
||||
def array_param(key)
|
||||
params[key]&.to_s&.split(',')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue