31 lines
887 B
Ruby
31 lines
887 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Api
|
|
module V1
|
|
class SearchBlueprint < Blueprinter::Base
|
|
identifier :searchable_id
|
|
fields :searchable_type, :granblue_id, :name_en, :name_jp, :element
|
|
|
|
# Character-specific fields (nil for non-characters)
|
|
field :season do |document|
|
|
document.searchable_type == 'Character' ? document.searchable&.season : nil
|
|
end
|
|
|
|
field :series do |document|
|
|
next nil unless document.searchable_type == 'Character'
|
|
|
|
character = document.searchable
|
|
next nil unless character
|
|
|
|
# Return series as array of objects with id, slug, and name
|
|
character.character_series_records.ordered.map do |series|
|
|
{
|
|
id: series.id,
|
|
slug: series.slug,
|
|
name: { en: series.name_en, ja: series.name_jp }
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|