module ElasticAPM::GraphQL
@api private
Constants
- CONCATENATOR
- KEYS_TO_NAME
- MAX_NUMBER_OF_QUERIES_FOR_NAME
- MULTIPLE_QUERIES
- PREFIX
- SUBTYPE
- TYPE
- UNNAMED
Public Class Methods
trace(key, data) { || ... }
click to toggle source
rubocop:disable Style/ExplicitBlockArgument
# File lib/elastic_apm/graphql.rb, line 52 def self.trace(key, data) return yield unless KEYS_TO_NAME.key?(key) return yield unless (transaction = ElasticAPM.current_transaction) if key == 'execute_query' transaction.name = "#{PREFIX}#{query_name(data[:query])}" end results = ElasticAPM.with_span( KEYS_TO_NAME.fetch(key, key), TYPE, subtype: SUBTYPE, action: key ) { yield } if key == 'execute_multiplex' transaction.name = "#{PREFIX}#{concat_names(results)}" end results end
Private Class Methods
concat_names(results)
click to toggle source
# File lib/elastic_apm/graphql.rb, line 82 def concat_names(results) if results.length > MAX_NUMBER_OF_QUERIES_FOR_NAME return MULTIPLE_QUERIES end results.map do |result| query_name(result.query) end.join(CONCATENATOR) end
query_name(query)
click to toggle source
# File lib/elastic_apm/graphql.rb, line 78 def query_name(query) query.operation_name || UNNAMED end