add artifact blueprints

This commit is contained in:
Justin Edmund 2025-12-03 12:58:40 -08:00
parent d6d655297b
commit 069118cbe9
5 changed files with 120 additions and 0 deletions

View file

@ -0,0 +1,18 @@
# frozen_string_literal: true
module Api
module V1
class ArtifactBlueprint < ApiBlueprint
field :name do |a|
{
en: a.name_en,
ja: a.name_jp
}
end
fields :granblue_id, :proficiency, :rarity
field :release_date, if: ->(_field, a, _options) { a.release_date.present? }
end
end
end

View file

@ -0,0 +1,31 @@
# frozen_string_literal: true
module Api
module V1
class ArtifactSkillBlueprint < ApiBlueprint
field :name do |s|
{
en: s.name_en,
ja: s.name_jp
}
end
fields :skill_group, :modifier, :polarity
field :base_values do |s|
s.base_values
end
field :growth, if: ->(_field, s, _options) { s.growth.present? } do |s|
s.growth.to_f
end
field :suffix do |s|
{
en: s.suffix_en,
ja: s.suffix_jp
}
end
end
end
end

View file

@ -0,0 +1,32 @@
# frozen_string_literal: true
module Api
module V1
class CollectionArtifactBlueprint < ApiBlueprint
identifier :id
fields :element, :level, :nickname, :created_at, :updated_at
# Proficiency is only present on quirk artifacts
field :proficiency, if: ->(_field, obj, _options) { obj.proficiency.present? }
field :skills do |obj|
[obj.skill1, obj.skill2, obj.skill3, obj.skill4].map do |skill|
next nil if skill.blank? || skill == {}
{
modifier: skill['modifier'],
strength: skill['strength'],
level: skill['level']
}
end
end
association :artifact, blueprint: ArtifactBlueprint
view :full do
association :artifact, blueprint: ArtifactBlueprint
end
end
end
end

View file

@ -0,0 +1,37 @@
# frozen_string_literal: true
module Api
module V1
class GridArtifactBlueprint < ApiBlueprint
fields :element, :level
# Proficiency is only present on quirk artifacts
field :proficiency, if: ->(_field, obj, _options) { obj.proficiency.present? }
field :skills do |obj|
[obj.skill1, obj.skill2, obj.skill3, obj.skill4].map do |skill|
next nil if skill.blank? || skill == {}
{
modifier: skill['modifier'],
strength: skill['strength'],
level: skill['level']
}
end
end
view :nested do
association :artifact, blueprint: ArtifactBlueprint
end
view :full do
include_view :nested
association :grid_character, blueprint: GridCharacterBlueprint
end
view :destroyed do
fields :created_at, :updated_at
end
end
end
end

View file

@ -16,6 +16,8 @@ module Api
view :nested do
include_view :mastery_bonuses
association :character, blueprint: CharacterBlueprint, view: :full
association :grid_artifact, blueprint: GridArtifactBlueprint, view: :nested,
if: ->(_field_name, gc, _options) { gc.grid_artifact.present? }
end
view :uncap do