hensei-api/app/blueprints/api/v1/crew_blueprint.rb

49 lines
1.3 KiB
Ruby

# frozen_string_literal: true
module Api
module V1
class CrewBlueprint < ApiBlueprint
fields :name, :gamertag, :granblue_crew_id, :description, :created_at
view :minimal do
fields :name, :gamertag
end
view :full do
fields :name, :gamertag, :granblue_crew_id, :description, :created_at
field :member_count do |crew|
crew.active_memberships.count
end
field :captain do |crew|
captain = crew.captain
UserBlueprint.render_as_hash(captain, view: :minimal) if captain
end
field :vice_captains do |crew|
UserBlueprint.render_as_hash(crew.vice_captains, view: :minimal)
end
field :current_membership do |crew, options|
current_user = options[:current_user]
next nil unless current_user
membership = crew.crew_memberships.find_by(user_id: current_user.id, retired: false)
CrewMembershipBlueprint.render_as_hash(membership) if membership
end
end
view :with_members do
include_view :full
field :members do |crew|
CrewMembershipBlueprint.render_as_hash(
crew.active_memberships.includes(:user).order(role: :desc, created_at: :asc),
view: :with_user
)
end
end
end
end
end