class GraphQL::Analyzer::Instrumentation::ElasticSearch
Public Class Methods
new()
click to toggle source
# File lib/graphql/analyzer/instrumentation/elastic_search.rb, line 5 def initialize @notifications = [] ActiveSupport::Notifications.subscribe('search.elasticsearch') do |name, start, finish, id, payload| @notifications << { name: name, start: start, finish: finish, id: id, payload: payload } end end
Private Instance Methods
adapter()
click to toggle source
# File lib/graphql/analyzer/instrumentation/elastic_search.rb, line 43 def adapter @adapter ||= 'elasticsearch' end
resolve_proc(type, field, method)
click to toggle source
# File lib/graphql/analyzer/instrumentation/elastic_search.rb, line 20 def resolve_proc(type, field, method) ->(obj, args, ctx) do result = field.public_send(method).call(obj, args, ctx) if @notifications.any? # TODO: Merge results when a field makes two types of queries # e.g. path: ['user', 'name'] makes a SQL and ES Query. ctx['graphql-analyzer']['resolvers'] << { 'path' => ctx.path, 'adapter' => adapter, 'parentType' => type.name, 'fieldName' => field.name, 'returnType' => field.type.to_s, 'details' => @notifications } @notifications = [] end result end end