Class: GraphQL::Schema::Union

Inherits:
Member
  • Object
show all
Extended by:
Member::AcceptsDefinition
Defined in:
lib/graphql/schema/union.rb

Constant Summary

Constants included from Member::GraphQLTypeNames

Member::GraphQLTypeNames::Boolean, Member::GraphQLTypeNames::ID, Member::GraphQLTypeNames::Int

Class Method Summary collapse

Methods included from Member::HasAstNode

#ast_node

Methods included from Member::HasPath

#path

Methods included from Member::RelayShortcuts

#connection_type, #connection_type_class, #edge_type, #edge_type_class

Methods included from Member::Scoped

#scope_items

Methods included from Member::TypeSystemHelpers

#kind, #list?, #non_null?, #to_list_type, #to_non_null_type, #to_type_signature

Methods included from Member::BaseDSLMethods::ConfigurationExtension

#inherited

Methods included from Member::BaseDSLMethods

#accessible?, #authorized?, #default_graphql_name, #description, #graphql_name, #introspection, #introspection?, #mutation, #name, #overridden_graphql_name, #to_graphql, #visible?

Methods included from Relay::TypeExtensions

#connection_type, #define_connection, #define_edge, #edge_type

Methods included from Member::CachedGraphQLDefinition

#graphql_definition, #initialize_copy, #type_class

Class Method Details

.kindObject



45
46
47
# File 'lib/graphql/schema/union.rb', line 45

def kind
  GraphQL::TypeKinds::UNION
end

.possible_types(*types, context: GraphQL::Query::NullContext, **options) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/graphql/schema/union.rb', line 8

def possible_types(*types, context: GraphQL::Query::NullContext, **options)
  if types.any?
    types.each do |t|
      type_memberships << type_membership_class.new(self, t, **options)
    end
  else
    visible_types = []
    type_memberships.each do |type_membership|
      if type_membership.visible?(context)
        visible_types << type_membership.object_type
      end
    end
    visible_types
  end
end

.to_graphqlObject



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/graphql/schema/union.rb', line 24

def to_graphql
  type_defn = GraphQL::UnionType.new
  type_defn.name = graphql_name
  type_defn.description = description
  type_defn.ast_node = ast_node
  type_defn.type_memberships = type_memberships
  if respond_to?(:resolve_type)
    type_defn.resolve_type = method(:resolve_type)
  end
  type_defn.[:type_class] = self
  type_defn
end

.type_membership_class(membership_class = nil) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/graphql/schema/union.rb', line 37

def type_membership_class(membership_class = nil)
  if membership_class
    @type_membership_class = membership_class
  else
    @type_membership_class || find_inherited_value(:type_membership_class, GraphQL::Schema::TypeMembership)
  end
end

.type_membershipsObject



49
50
51
# File 'lib/graphql/schema/union.rb', line 49

def type_memberships
  @type_memberships ||= []
end