Module: ElasticAPM::GraphQL Private
- Defined in:
- lib/elastic_apm/graphql.rb
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Constant Summary collapse
- TYPE =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
'app'
- SUBTYPE =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
'graphql'
- PREFIX =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
'GraphQL: '
- UNNAMED =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
'[unnamed]'
- MULTIPLE_QUERIES =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
'[multiple-queries]'
- CONCATENATOR =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
'+'
- MAX_NUMBER_OF_QUERIES_FOR_NAME =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
5
- KEYS_TO_NAME =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
{ 'lex' => 'graphql.lex', 'parse' => 'graphql.parse', 'validate' => 'graphql.validate', 'analyze_multiplex' => 'graphql.analyze_multiplex', 'analyze_query' => 'graphql.analyze_query', 'execute_multiplex' => 'graphql.execute_multiplex', 'execute_query' => 'graphql.execute_query', 'execute_query_lazy' => 'graphql.execute_query_lazy', 'authorized_lazy' => 'graphql.authorized_lazy', 'resolve_type' => 'graphql.resolve_type', 'resolve_type_lazy' => 'graphql.resolve_type_lazy' # These are available but deliberately left out as they are mostly noise. # "execute_field" => "graphql.execute_field", # "execute_field_lazy" => "graphql.execute_field_lazy", # "authorized" => "graphql.authorized", }.freeze
Class Method Summary collapse
-
.trace(key, data) ⇒ Object
private
rubocop:disable Style/ExplicitBlockArgument.
Class Method Details
.trace(key, data) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
rubocop:disable Style/ExplicitBlockArgument
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# 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 |