Module: Yabeda::GraphQL::YabedaTracing
- Defined in:
- lib/yabeda/graphql/yabeda_tracing.rb
Instance Method Summary collapse
- #cache(query) ⇒ Object
- #execute_field(field:, query:, ast_node:, arguments:, object:, &block) ⇒ Object
- #execute_field_lazy(field:, query:, ast_node:, arguments:, object:, &block) ⇒ Object
- #extract_field_tags(field) ⇒ Object
- #instrument_field_execution(query, path, tags, duration) ⇒ Object
- #instrument_mutation_execution(tags) ⇒ Object
- #instrument_query_execution(tags) ⇒ Object
Instance Method Details
#cache(query) ⇒ Object
57 58 59 |
# File 'lib/yabeda/graphql/yabeda_tracing.rb', line 57 def cache(query) query.context.namespace(Yabeda::GraphQL)[:field_call_cache] end |
#execute_field(field:, query:, ast_node:, arguments:, object:, &block) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/yabeda/graphql/yabeda_tracing.rb', line 4 def execute_field(field:, query:, ast_node:, arguments:, object:, &block) start = ::Process.clock_gettime ::Process::CLOCK_MONOTONIC result = block.call duration = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - start = (field) path = query.context.current_path if path.length == 1 return result if query.schema.lazy?(result) if query.query? instrument_query_execution() elsif query.mutation? instrument_mutation_execution() elsif query.subscription? # Not implemented yet end else instrument_field_execution(query, path, , duration) end result end |
#execute_field_lazy(field:, query:, ast_node:, arguments:, object:, &block) ⇒ Object
29 30 31 |
# File 'lib/yabeda/graphql/yabeda_tracing.rb', line 29 def execute_field_lazy(field:, query:, ast_node:, arguments:, object:, &block) execute_field(field: field, query: query, ast_node: ast_node, arguments: arguments, object: object, &block) end |
#extract_field_tags(field) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/yabeda/graphql/yabeda_tracing.rb', line 33 def (field) owner = field.respond_to?(:owner) ? field.owner : field.[:type_class].owner { type: owner.graphql_name, field: field.graphql_name, deprecated: !field.deprecation_reason.nil?, } end |
#instrument_field_execution(query, path, tags, duration) ⇒ Object
42 43 44 45 |
# File 'lib/yabeda/graphql/yabeda_tracing.rb', line 42 def instrument_field_execution(query, path, , duration) cache(query)[path][:tags] = cache(query)[path][:duration] += duration end |
#instrument_mutation_execution(tags) ⇒ Object
47 48 49 50 |
# File 'lib/yabeda/graphql/yabeda_tracing.rb', line 47 def instrument_mutation_execution() = { name: [:field], deprecated: [:deprecated] } Yabeda.graphql.mutation_fields_count.increment() end |
#instrument_query_execution(tags) ⇒ Object
52 53 54 55 |
# File 'lib/yabeda/graphql/yabeda_tracing.rb', line 52 def instrument_query_execution() = { name: [:field], deprecated: [:deprecated] } Yabeda.graphql.query_fields_count.increment() end |