Module: GraphQL::Schema::ResolveTypeWithType

Defined in:
lib/graphql/schema.rb

Overview

rubocop:disable Lint/DuplicateMethods

Instance Method Summary collapse

Instance Method Details

#resolve_type(type, obj, ctx) ⇒ Object



1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
# File 'lib/graphql/schema.rb', line 1419

def resolve_type(type, obj, ctx)
  first_resolved_type, resolved_value = if type.is_a?(Module) && type.respond_to?(:resolve_type)
    type.resolve_type(obj, ctx)
  else
    super
  end

  after_lazy(first_resolved_type) do |resolved_type|
    if resolved_type.nil? || (resolved_type.is_a?(Module) && resolved_type.respond_to?(:kind)) || resolved_type.is_a?(GraphQL::BaseType)
      if resolved_value
        [resolved_type, resolved_value]
      else
        resolved_type
      end
    else
      raise ".resolve_type should return a type definition, but got #{resolved_type.inspect} (#{resolved_type.class}) from `resolve_type(#{type}, #{obj}, #{ctx})`"
    end
  end
end