class GraphQL::UnionType

@api deprecated

def add_possible_types(types, **options)

def add_possible_types(types, **options)
  @type_memberships ||= []
  Array(types).each { |t|
    @type_memberships << self.type_membership_class.new(self, t, **options)
  }
  nil
end

def get_possible_type(type_name, ctx)

Returns:
  • (GraphQL::ObjectType, nil) - The type named `type_name` if it exists and is a member of this {UnionType}, (else `nil`)

Parameters:
  • ctx (GraphQL::Query::Context) -- The context for the current query
  • type_name (String) --
def get_possible_type(type_name, ctx)
  type = ctx.query.get_type(type_name)
  type if type && ctx.query.warden.possible_types(self).include?(type)
end

def include?(child_type_defn, ctx = GraphQL::Query::NullContext)

Returns:
  • (Boolean) - True if `child_type_defn` is a member of this {UnionType}
def include?(child_type_defn, ctx = GraphQL::Query::NullContext)
  possible_types(ctx).include?(child_type_defn)
end

def initialize

def initialize
  super
  @type_membership_class = GraphQL::Schema::TypeMembership
  @type_memberships = []
  @cached_possible_types = nil
  @resolve_type_proc = nil
end

def initialize_copy(other)

def initialize_copy(other)
  super
  @type_membership_class = other.type_membership_class
  @type_memberships = other.type_memberships.dup
  @cached_possible_types = nil
end

def kind

def kind
  GraphQL::TypeKinds::UNION
end

def possible_type?(type, ctx)

Returns:
  • (Boolean) - True if the `type` exists and is a member of this {UnionType}, (else `nil`)

Parameters:
  • ctx (GraphQL::Query::Context) -- The context for the current query
  • type (String, GraphQL::BaseType) -- Name of the type or a type definition
def possible_type?(type, ctx)
  type_name = type.is_a?(String) ? type : type.graphql_name
  !get_possible_type(type_name, ctx).nil?
end

def possible_types(ctx = GraphQL::Query::NullContext)

Returns:
  • (Array) - Types which may be found in this union
def possible_types(ctx = GraphQL::Query::NullContext)
  if ctx == GraphQL::Query::NullContext
    # Only cache the default case; if we cached for every `ctx`, it would be a memory leak
    # (The warden should cache calls to this method, so it's called only once per query,
    # unless user code calls it directly.)
    @cached_possible_types ||= possible_types_for_context(ctx)
  else
    possible_types_for_context(ctx)
  end
end

def possible_types=(types)

def possible_types=(types)
  # This is a re-assignment, so clear the previous values
  @type_memberships = []
  @cached_possible_types = nil
  add_possible_types(types, **{})
end

def possible_types_for_context(ctx)

def possible_types_for_context(ctx)
  visible_types = []
  @type_memberships.each do |type_membership|
    if type_membership.visible?(ctx)
      visible_types << BaseType.resolve_related_type(type_membership.object_type)
    end
  end
  visible_types
end

def resolve_type(value, ctx)

def resolve_type(value, ctx)
  ctx.query.resolve_type(self, value)
end

def resolve_type=(new_resolve_type_proc)

def resolve_type=(new_resolve_type_proc)
  @resolve_type_proc = new_resolve_type_proc
end

def type_memberships=(type_memberships)

def type_memberships=(type_memberships)
  @type_memberships = type_memberships
end