From 65ad500550a25215d3f33ff5a66a1c528b93345f Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Sun, 21 Dec 2025 22:14:41 -0800 Subject: [PATCH] expose extra_prerequisite and forge chain in weapon api --- app/blueprints/api/v1/weapon_blueprint.rb | 38 ++++++++++++++++++-- app/controllers/api/v1/weapons_controller.rb | 4 +-- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/app/blueprints/api/v1/weapon_blueprint.rb b/app/blueprints/api/v1/weapon_blueprint.rb index 854cbd6..9d10027 100644 --- a/app/blueprints/api/v1/weapon_blueprint.rb +++ b/app/blueprints/api/v1/weapon_blueprint.rb @@ -13,7 +13,7 @@ module Api # Primary information fields :granblue_id, :element, :proficiency, :max_level, :max_skill_level, :max_awakening_level, :limit, :rarity, - :ax, :ax_type, :gacha, :promotions + :ax, :ax_type, :gacha, :promotions, :forge_order # Series - returns full object with flags if weapon_series is present, fallback to legacy integer field :series do |w| @@ -46,7 +46,8 @@ module Api { flb: w.flb, ulb: w.ulb, - transcendence: w.transcendence + transcendence: w.transcendence, + extra_prerequisite: w.extra_prerequisite } end @@ -115,6 +116,39 @@ module Api } } end + + # Forge chain fields + field :forged_from do |w| + next nil unless w.forged_from.present? + + parent = w.forged_from_weapon + next nil unless parent + + { + id: parent.id, + granblue_id: parent.granblue_id, + name: { + en: parent.name_en, + ja: parent.name_jp + } + } + end + + field :forge_chain do |w| + next nil unless w.forge_chain_id.present? + + w.forge_chain.map do |weapon| + { + id: weapon.id, + granblue_id: weapon.granblue_id, + name: { + en: weapon.name_en, + ja: weapon.name_jp + }, + forge_order: weapon.forge_order + } + end + end end # Separate view for raw data - only used by dedicated endpoint diff --git a/app/controllers/api/v1/weapons_controller.rb b/app/controllers/api/v1/weapons_controller.rb index 8ed8dfb..cc4b168 100644 --- a/app/controllers/api/v1/weapons_controller.rb +++ b/app/controllers/api/v1/weapons_controller.rb @@ -216,13 +216,13 @@ module Api def weapon_params params.require(:weapon).permit( :granblue_id, :name_en, :name_jp, :rarity, :element, :proficiency, :series, :new_series, - :flb, :ulb, :transcendence, :extra, :limit, :ax, :gacha, + :flb, :ulb, :transcendence, :extra, :extra_prerequisite, :limit, :ax, :gacha, :min_hp, :max_hp, :max_hp_flb, :max_hp_ulb, :min_atk, :max_atk, :max_atk_flb, :max_atk_ulb, :max_level, :max_skill_level, :max_awakening_level, :release_date, :flb_date, :ulb_date, :transcendence_date, :wiki_en, :wiki_ja, :wiki_raw, :gamewith, :kamigame, - :recruits, + :recruits, :forged_from, :forge_chain_id, :forge_order, nicknames_en: [], nicknames_jp: [], promotions: [] ) end