Refactor canonical object blueprints
This commit is contained in:
parent
e7db082d8b
commit
b71ca8e458
3 changed files with 124 additions and 92 deletions
|
|
@ -3,72 +3,77 @@
|
|||
module Api
|
||||
module V1
|
||||
class CharacterBlueprint < ApiBlueprint
|
||||
field :name do |w|
|
||||
field :name do |c|
|
||||
{
|
||||
en: w.name_en,
|
||||
ja: w.name_jp
|
||||
en: c.name_en,
|
||||
ja: c.name_jp
|
||||
}
|
||||
end
|
||||
|
||||
fields :granblue_id, :character_id, :rarity,
|
||||
:element, :gender, :special
|
||||
|
||||
field :uncap do |w|
|
||||
field :uncap do |c|
|
||||
{
|
||||
flb: w.flb,
|
||||
ulb: w.ulb
|
||||
flb: c.flb,
|
||||
ulb: c.ulb
|
||||
}
|
||||
end
|
||||
|
||||
field :hp do |w|
|
||||
{
|
||||
min_hp: w.min_hp,
|
||||
max_hp: w.max_hp,
|
||||
max_hp_flb: w.max_hp_flb
|
||||
}
|
||||
field :race do |c|
|
||||
[c.race1, c.race2].compact
|
||||
end
|
||||
|
||||
field :atk do |w|
|
||||
{
|
||||
min_atk: w.min_atk,
|
||||
max_atk: w.max_atk,
|
||||
max_atk_flb: w.max_atk_flb
|
||||
}
|
||||
field :proficiency do |c|
|
||||
[c.proficiency1, c.proficiency2].compact
|
||||
end
|
||||
|
||||
field :race do |w|
|
||||
[
|
||||
w.race1,
|
||||
w.race2
|
||||
]
|
||||
end
|
||||
view :full do
|
||||
include_view :stats
|
||||
include_view :rates
|
||||
include_view :dates
|
||||
|
||||
field :proficiency do |w|
|
||||
[
|
||||
w.proficiency1,
|
||||
w.proficiency2
|
||||
]
|
||||
end
|
||||
|
||||
field :data do |w|
|
||||
{
|
||||
base_da: w.base_da,
|
||||
base_ta: w.base_ta
|
||||
}
|
||||
end
|
||||
|
||||
field :ougi_ratio do |w|
|
||||
{
|
||||
ougi_ratio: w.ougi_ratio,
|
||||
ougi_ratio_flb: w.ougi_ratio_flb
|
||||
}
|
||||
end
|
||||
|
||||
field :awakenings do
|
||||
Awakening.where(object_type: 'Character').map do |a|
|
||||
AwakeningBlueprint.render_as_hash(a)
|
||||
field :awakenings do
|
||||
Character::AWAKENINGS.map do |awakening|
|
||||
AwakeningBlueprint.render_as_hash(OpenStruct.new(awakening))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
view :stats do
|
||||
field :hp do |c|
|
||||
{
|
||||
min_hp: c.min_hp,
|
||||
max_hp: c.max_hp,
|
||||
max_hp_flb: c.max_hp_flb
|
||||
}
|
||||
end
|
||||
|
||||
field :atk do |c|
|
||||
{
|
||||
min_atk: c.min_atk,
|
||||
max_atk: c.max_atk,
|
||||
max_atk_flb: c.max_atk_flb
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
view :rates do
|
||||
fields :base_da, :base_ta
|
||||
|
||||
field :ougi_ratio do |c|
|
||||
{
|
||||
ougi_ratio: c.ougi_ratio,
|
||||
ougi_ratio_flb: c.ougi_ratio_flb
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
view :dates do
|
||||
field :release_date
|
||||
field :flb_date
|
||||
field :ulb_date
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,41 +3,55 @@
|
|||
module Api
|
||||
module V1
|
||||
class SummonBlueprint < ApiBlueprint
|
||||
field :name do |w|
|
||||
field :name do |s|
|
||||
{
|
||||
en: w.name_en,
|
||||
ja: w.name_jp
|
||||
en: s.name_en,
|
||||
ja: s.name_jp
|
||||
}
|
||||
end
|
||||
|
||||
fields :granblue_id, :element, :rarity, :max_level
|
||||
|
||||
field :uncap do |w|
|
||||
field :uncap do |s|
|
||||
{
|
||||
flb: w.flb,
|
||||
ulb: w.ulb,
|
||||
transcendence: w.transcendence
|
||||
flb: s.flb,
|
||||
ulb: s.ulb,
|
||||
transcendence: s.transcendence
|
||||
}
|
||||
end
|
||||
|
||||
field :hp do |w|
|
||||
{
|
||||
min_hp: w.min_hp,
|
||||
max_hp: w.max_hp,
|
||||
max_hp_flb: w.max_hp_flb,
|
||||
max_hp_ulb: w.max_hp_ulb,
|
||||
max_hp_xlb: w.max_hp_xlb
|
||||
}
|
||||
view :stats do
|
||||
field :hp do |s|
|
||||
{
|
||||
min_hp: s.min_hp,
|
||||
max_hp: s.max_hp,
|
||||
max_hp_flb: s.max_hp_flb,
|
||||
max_hp_ulb: s.max_hp_ulb,
|
||||
max_hp_xlb: s.max_hp_xlb
|
||||
}
|
||||
end
|
||||
|
||||
field :atk do |s|
|
||||
{
|
||||
min_atk: s.min_atk,
|
||||
max_atk: s.max_atk,
|
||||
max_atk_flb: s.max_atk_flb,
|
||||
max_atk_ulb: s.max_atk_ulb,
|
||||
max_atk_xlb: s.max_atk_xlb
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
field :atk do |w|
|
||||
{
|
||||
min_atk: w.min_atk,
|
||||
max_atk: w.max_atk,
|
||||
max_atk_flb: w.max_atk_flb,
|
||||
max_atk_ulb: w.max_atk_ulb,
|
||||
max_atk_xlb: w.max_atk_xlb
|
||||
}
|
||||
view :dates do
|
||||
field :release_date
|
||||
field :flb_date
|
||||
field :ulb_date
|
||||
field :transcendence_date
|
||||
end
|
||||
|
||||
view :full do
|
||||
include_view :stats
|
||||
include_view :dates
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -10,10 +10,12 @@ module Api
|
|||
}
|
||||
end
|
||||
|
||||
# Primary information
|
||||
fields :granblue_id, :element, :proficiency,
|
||||
:max_level, :max_skill_level, :max_awakening_level, :limit, :rarity,
|
||||
:series, :ax, :ax_type
|
||||
|
||||
# Uncap information
|
||||
field :uncap do |w|
|
||||
{
|
||||
flb: w.flb,
|
||||
|
|
@ -22,28 +24,39 @@ module Api
|
|||
}
|
||||
end
|
||||
|
||||
field :hp do |w|
|
||||
{
|
||||
min_hp: w.min_hp,
|
||||
max_hp: w.max_hp,
|
||||
max_hp_flb: w.max_hp_flb,
|
||||
max_hp_ulb: w.max_hp_ulb
|
||||
}
|
||||
end
|
||||
|
||||
field :atk do |w|
|
||||
{
|
||||
min_atk: w.min_atk,
|
||||
max_atk: w.max_atk,
|
||||
max_atk_flb: w.max_atk_flb,
|
||||
max_atk_ulb: w.max_atk_ulb
|
||||
}
|
||||
end
|
||||
|
||||
field :awakenings, if: ->(_fn, obj, _opt) { obj.awakenings.length.positive? } do |w|
|
||||
w.awakenings.map do |a|
|
||||
AwakeningBlueprint.render_as_hash(a)
|
||||
view :stats do
|
||||
field :hp do |w|
|
||||
{
|
||||
min_hp: w.min_hp,
|
||||
max_hp: w.max_hp,
|
||||
max_hp_flb: w.max_hp_flb,
|
||||
max_hp_ulb: w.max_hp_ulb
|
||||
}
|
||||
end
|
||||
|
||||
field :atk do |w|
|
||||
{
|
||||
min_atk: w.min_atk,
|
||||
max_atk: w.max_atk,
|
||||
max_atk_flb: w.max_atk_flb,
|
||||
max_atk_ulb: w.max_atk_ulb
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
view :dates do
|
||||
field :release_date
|
||||
field :flb_date
|
||||
field :ulb_date
|
||||
field :transcendence_date
|
||||
end
|
||||
|
||||
view :full do
|
||||
include_view :stats
|
||||
include_view :dates
|
||||
association :awakenings,
|
||||
blueprint: AwakeningBlueprint,
|
||||
if: ->(_field_name, weapon, _options) { weapon.awakenings.any? }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue