hensei-api/app/blueprints/api/v1/crew_blueprint.rb
Justin Edmund e98e59491d add crew controllers, blueprints, routes, and errors
- CrewsController: create, show, update, members, leave, transfer_captain
- CrewMembershipsController: update, destroy, promote, demote
- CrewAuthorizationConcern for member/officer/captain checks
- blueprints for serialization
- custom error classes for crew operations
2025-12-03 22:41:25 -08:00

41 lines
1 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
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