Class: GraphQL::Schema::Union
- Extended by:
- Member::HasUnresolvedTypeError
- Defined in:
- lib/graphql/schema/union.rb
Constant Summary
Constants included from Member::HasDirectives
Member::HasDirectives::NO_DIRECTIVES
Constants included from Member::GraphQLTypeNames
Member::GraphQLTypeNames::Boolean, Member::GraphQLTypeNames::ID, Member::GraphQLTypeNames::Int
Class Method Summary collapse
- 
  
    
      .all_possible_types  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
- 
  
    
      .assign_type_membership_object_type(object_type)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  private
  
    Update a type membership whose .object_typeis a string or late-bound type so that the type membership’s.object_typeis the givenobject_type.
- 
  
    
      .kind  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
- 
  
    
      .possible_types(*types, context: GraphQL::Query::NullContext, **options)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
- 
  
    
      .type_membership_class(membership_class = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
- 
  
    
      .type_memberships  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Methods included from Member::BaseDSLMethods
#accessible?, #authorized?, #default_graphql_name, #description, #graphql_name, #introspection, #introspection?, #mutation, #name, #overridden_graphql_name, #visible?
Methods included from Member::BaseDSLMethods::ConfigurationExtension
Methods included from Member::TypeSystemHelpers
#kind, #list?, #non_null?, #to_list_type, #to_non_null_type, #to_type_signature
Methods included from Member::Scoped
Methods included from Member::RelayShortcuts
#connection_type, #connection_type_class, #edge_type, #edge_type_class
Methods included from Member::HasPath
Methods included from Member::HasAstNode
Methods included from Member::HasDirectives
#directive, #directives, #remove_directive
Class Method Details
.all_possible_types ⇒ Object
| 31 32 33 | # File 'lib/graphql/schema/union.rb', line 31 def all_possible_types type_memberships.map(&:object_type) end | 
.assign_type_membership_object_type(object_type) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Update a type membership whose .object_type is a string or late-bound type
so that the type membership’s .object_type is the given object_type.
(This is used for updating the union after the schema as lazily loaded the union member.)
| 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | # File 'lib/graphql/schema/union.rb', line 55 def assign_type_membership_object_type(object_type) assert_valid_union_member(object_type) type_memberships.each { |tm| possible_type = tm.object_type if possible_type.is_a?(String) && (possible_type == object_type.name) # This is a match of Ruby class names, not graphql names, # since strings are used to refer to constants. tm.object_type = object_type elsif possible_type.is_a?(LateBoundType) && possible_type.graphql_name == object_type.graphql_name tm.object_type = object_type end } nil end | 
.kind ⇒ Object
| 43 44 45 | # File 'lib/graphql/schema/union.rb', line 43 def kind GraphQL::TypeKinds::UNION end | 
.possible_types(*types, context: GraphQL::Query::NullContext, **options) ⇒ Object
| 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # File 'lib/graphql/schema/union.rb', line 13 def possible_types(*types, context: GraphQL::Query::NullContext, **) if types.any? types.each do |t| assert_valid_union_member(t) type_memberships << type_membership_class.new(self, t, **) end else visible_types = [] warden = Warden.from_context(context) type_memberships.each do |type_membership| if warden.visible_type_membership?(type_membership, context) visible_types << type_membership.object_type end end visible_types end end | 
.type_membership_class(membership_class = nil) ⇒ Object
| 35 36 37 38 39 40 41 | # File 'lib/graphql/schema/union.rb', line 35 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_memberships ⇒ Object
| 47 48 49 | # File 'lib/graphql/schema/union.rb', line 47 def type_memberships @type_memberships ||= [] end |