diff --git a/app/blueprints/api/v1/character_blueprint.rb b/app/blueprints/api/v1/character_blueprint.rb index 6d8f30e..6728293 100644 --- a/app/blueprints/api/v1/character_blueprint.rb +++ b/app/blueprints/api/v1/character_blueprint.rb @@ -38,6 +38,39 @@ module Api AwakeningBlueprint.render_as_hash(OpenStruct.new(awakening)) end end + + field :nicknames do |c| + { + en: c.nicknames_en, + ja: c.nicknames_jp + } + end + + field :links do |c| + { + wiki_en: c.wiki_en, + wiki_ja: c.wiki_ja, + gamewith: c.gamewith, + kamigame: c.kamigame + } + end + end + + # Separate view for raw data - only used by dedicated endpoint + view :raw do + excludes :name, :granblue_id, :character_id, :rarity, :element, :gender, :special, :uncap, :race, :proficiency + + field :wiki_raw do |c| + c.wiki_raw + end + + field :game_raw_en do |c| + c.game_raw_en + end + + field :game_raw_jp do |c| + c.game_raw_jp + end end view :stats do diff --git a/app/blueprints/api/v1/summon_blueprint.rb b/app/blueprints/api/v1/summon_blueprint.rb index 6b7c824..8605c41 100644 --- a/app/blueprints/api/v1/summon_blueprint.rb +++ b/app/blueprints/api/v1/summon_blueprint.rb @@ -52,6 +52,39 @@ module Api view :full do include_view :stats include_view :dates + + field :nicknames do |s| + { + en: s.nicknames_en, + ja: s.nicknames_jp + } + end + + field :links do |s| + { + wiki_en: s.wiki_en, + wiki_ja: s.wiki_ja, + gamewith: s.gamewith, + kamigame: s.kamigame + } + end + end + + # Separate view for raw data - only used by dedicated endpoint + view :raw do + excludes :name, :granblue_id, :element, :rarity, :max_level, :uncap + + field :wiki_raw do |s| + s.wiki_raw + end + + field :game_raw_en do |s| + s.game_raw_en + end + + field :game_raw_jp do |s| + s.game_raw_jp + end end end end diff --git a/app/blueprints/api/v1/weapon_blueprint.rb b/app/blueprints/api/v1/weapon_blueprint.rb index 7075680..81316ee 100644 --- a/app/blueprints/api/v1/weapon_blueprint.rb +++ b/app/blueprints/api/v1/weapon_blueprint.rb @@ -57,6 +57,56 @@ module Api association :awakenings, blueprint: AwakeningBlueprint, if: ->(_field_name, weapon, _options) { weapon.awakenings.any? } + + field :nicknames do |w| + { + en: w.nicknames_en, + ja: w.nicknames_jp + } + end + + field :links do |w| + { + wiki_en: w.wiki_en, + wiki_ja: w.wiki_ja, + gamewith: w.gamewith, + kamigame: w.kamigame + } + end + + field :recruits do |w| + next nil unless w.recruits.present? + + character = Character.find_by(granblue_id: w.recruits) + next nil unless character + + { + id: character.id, + granblue_id: character.granblue_id, + name: { + en: character.name_en, + ja: character.name_jp + } + } + end + end + + # Separate view for raw data - only used by dedicated endpoint + view :raw do + excludes :name, :granblue_id, :element, :proficiency, :max_level, :max_skill_level, + :max_awakening_level, :limit, :rarity, :series, :ax, :ax_type, :uncap + + field :wiki_raw do |w| + w.wiki_raw + end + + field :game_raw_en do |w| + w.game_raw_en + end + + field :game_raw_jp do |w| + w.game_raw_jp + end end end end