module GraphQL::Schema::Loader

def load(introspection_result)

Returns:
  • (GraphQL::Schema) - the schema described by `input`

Parameters:
  • introspection_result (Hash) -- A response from {GraphQL::Introspection::INTROSPECTION_QUERY}
def load(introspection_result)
  schema = introspection_result.fetch("data").fetch("__schema")
  types = {}
  type_resolver = -> (type) { -> { resolve_type(types, type) } }
  schema.fetch("types").each do |type|
    next if type.fetch("name").start_with?("__")
    type_object = define_type(type, type_resolver)
    types[type_object.name] = type_object
  end
  kargs = { :orphan_types => types.values }
  [:query, :mutation, :subscription].each do |root|
    type = schema["#{root}Type"]
    kargs[root] = types.fetch(type.fetch("name")) if type
  end
  Schema.define(**kargs)
end