class GraphQL::Analyzer

Constants

VERSION

Attributes

instruments[R]

Public Class Methods

new(instruments) click to toggle source
# File lib/graphql/analyzer.rb, line 20
def initialize(instruments)
  @instruments = instruments
end

Public Instance Methods

after_query(query) click to toggle source
# File lib/graphql/analyzer.rb, line 33
def after_query(query)
  result = query.result

  result["extensions"] ||= {}
  result["extensions"]["analyzer"] = {
    "version" => 1,
    "execution" => {
      "resolvers" => query.context['graphql-analyzer']['resolvers']
    }
  }
end
before_query(query) click to toggle source
# File lib/graphql/analyzer.rb, line 29
def before_query(query)
  query.context['graphql-analyzer'] = { 'resolvers' => [] }
end
instrument(type, field) click to toggle source
# File lib/graphql/analyzer.rb, line 45
def instrument(type, field)
  instruments.reduce(field) do |field, instrumentation|
    field.redefine do
      resolve(instrumentation.instrument(type, field))
      lazy_resolve(instrumentation.instrument_lazy(type, field))
    end
  end
end
use(schema_definition) click to toggle source
# File lib/graphql/analyzer.rb, line 24
def use(schema_definition)
  schema_definition.instrument(:query, self)
  schema_definition.instrument(:field, self)
end