Files
x-stake/app/graphql/x_stake_schema.rb
2021-09-05 21:21:10 -03:00

33 lines
919 B
Ruby

# frozen_string_literal: true
class XStakeSchema < GraphQL::Schema
mutation(Types::MutationType)
query(Types::QueryType)
use GraphQL::Dataloader
def self.resolve_type(abstract_type, obj, ctx)
case obj
when Balance
Types::BalanceType
when FiatBalance
Types::FiatBalanceType
when SellCryptoOrder
Types::SellCryptoOrderType
when BuyCryptoOrder
Types::BuyCryptoOrderType
when DepositOrder
Types::DepositOrderType
else
raise(GraphQL::RequiredImplementationMissingError, "Unexpected object: #{obj}")
end
end
def self.id_from_object(object, type_definition, ctx)
GraphQL::Schema::UniqueWithinType.encode(type_definition.name, object.id)
end
def self.object_from_id(id, ctx)
type_name, item_id = GraphQL::Schema::UniqueWithinType.decode(id)
Pundit.policy_scope(ctx[:current_user], type_name.constantize).find(item_id)
end
end