Sha256: 8ab822aeda2cb2709babfd5f40c8d60ac546fd1a8028ef960795d6f78a553d14

Contents?: true

Size: 1.78 KB

Versions: 2

Compression:

Stored size: 1.78 KB

Contents

# frozen_string_literal: true

require_relative '../analytics'
require_relative '../patcher'
require_relative 'tracing_patcher'
require_relative 'trace_patcher'
require_relative 'unified_trace_patcher'

module Datadog
  module Tracing
    module Contrib
      module GraphQL
        # Provides instrumentation for `graphql` through the GraphQL tracing framework
        module Patcher
          include Contrib::Patcher

          module_function

          def target_version
            Integration.version
          end

          def patch
            if configuration[:with_deprecated_tracer]
              TracingPatcher.patch!(schemas, trace_options)
            elsif Integration.trace_supported?
              if configuration[:with_unified_tracer]
                UnifiedTracePatcher.patch!(schemas, trace_options)
              else
                TracePatcher.patch!(schemas, trace_options)
              end
            else
              Datadog.logger.warn(
                "GraphQL version (#{target_version}) does not support GraphQL::Tracing::DataDogTrace"\
                'or Datadog::Tracing::Contrib::GraphQL::UnifiedTrace.'\
                'Falling back to GraphQL::Tracing::DataDogTracing.'
              )
              TracingPatcher.patch!(schemas, trace_options)
            end
          end

          def trace_options
            {
              service: configuration[:service_name],
              analytics_enabled: Contrib::Analytics.enabled?(configuration[:analytics_enabled]),
              analytics_sample_rate: configuration[:analytics_sample_rate]
            }
          end

          def configuration
            Datadog.configuration.tracing[:graphql]
          end

          def schemas
            configuration[:schemas]
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
datadog-2.3.0 lib/datadog/tracing/contrib/graphql/patcher.rb
datadog-2.2.0 lib/datadog/tracing/contrib/graphql/patcher.rb