Sha256: a0d83712078da7eddec65dd0e5c0b1ff9281ce32a7ba2cefb0e9e19cf3a987c4

Contents?: true

Size: 1.78 KB

Versions: 19

Compression:

Stored size: 1.78 KB

Contents

require 'ddtrace/contrib/patcher'

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

        module_function

        def patched?
          done?(:graphql)
        end

        def patch
          return if get_option(:schemas).nil?

          do_once(:graphql) do
            begin
              require 'ddtrace/ext/app_types'
              require 'ddtrace/ext/http'
              get_option(:schemas).each { |s| patch_schema!(s) }
            rescue StandardError => e
              Datadog::Tracer.log.error("Unable to apply GraphQL integration: #{e}")
            end
          end
        end

        def patch_schema!(schema)
          tracer = get_option(:tracer)
          service_name = get_option(:service_name)
          analytics_enabled = Contrib::Analytics.enabled?(get_option(:analytics_enabled))
          analytics_sample_rate = get_option(:analytics_sample_rate)

          if schema.respond_to?(:use)
            schema.use(
              ::GraphQL::Tracing::DataDogTracing,
              tracer: tracer,
              service: service_name,
              analytics_enabled: analytics_enabled,
              analytics_sample_rate: analytics_sample_rate
            )
          else
            schema.define do
              use(
                ::GraphQL::Tracing::DataDogTracing,
                tracer: tracer,
                service: service_name,
                analytics_enabled: analytics_enabled,
                analytics_sample_rate: analytics_sample_rate
              )
            end
          end
        end

        def get_option(option)
          Datadog.configuration[:graphql].get_option(option)
        end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 2 rubygems

Version Path
ls-trace-0.1.2 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.29.1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.26.1 lib/ddtrace/contrib/graphql/patcher.rb
ls-trace-0.1.1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.29.0 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.28.0 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.27.0 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.26.0 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.25.1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.25.0 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.24.0 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.23.3 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.23.2 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.23.1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.23.0 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.22.0 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.21.2 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.21.1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.21.0 lib/ddtrace/contrib/graphql/patcher.rb