* add party_shares table and model with associations * add party share errors and blueprint * add party shares controller and routes * include shared parties in listings and show * add party share factory and model specs * add party shares controller specs * include shares in party response for owners * add crew shared_parties endpoint
57 lines
1.2 KiB
Ruby
57 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Api
|
|
module V1
|
|
class PartyShareBlueprint < ApiBlueprint
|
|
identifier :id
|
|
|
|
fields :created_at
|
|
|
|
field :shareable_type do |share|
|
|
share.shareable_type.downcase
|
|
end
|
|
|
|
field :shareable_id do |share|
|
|
share.shareable_id
|
|
end
|
|
|
|
view :with_shareable do
|
|
fields :created_at
|
|
|
|
field :shareable_type do |share|
|
|
share.shareable_type.downcase
|
|
end
|
|
|
|
field :shareable do |share|
|
|
case share.shareable_type
|
|
when 'Crew'
|
|
CrewBlueprint.render_as_hash(share.shareable, view: :minimal)
|
|
end
|
|
end
|
|
|
|
field :shared_by do |share|
|
|
UserBlueprint.render_as_hash(share.shared_by, view: :minimal)
|
|
end
|
|
end
|
|
|
|
view :with_party do
|
|
fields :created_at
|
|
|
|
field :shareable_type do |share|
|
|
share.shareable_type.downcase
|
|
end
|
|
|
|
field :party do |share|
|
|
PartyBlueprint.render_as_hash(share.party, view: :preview)
|
|
end
|
|
|
|
field :shareable do |share|
|
|
case share.shareable_type
|
|
when 'Crew'
|
|
CrewBlueprint.render_as_hash(share.shareable, view: :minimal)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|