class ElasticAPM::Spies::ElasticsearchSpy

@api private

def install

def install
  ::Elasticsearch::Transport::Client.class_eval do
    alias perform_request_without_apm perform_request
    def perform_request(method, path, *args, &block)
      name = format(NAME_FORMAT, method, path)
      statement = args[0].is_a?(String) ? args[0] : args[0].to_json
      context = Span::Context.new(
        db: { statement: statement },
        destination: {
          name: SUBTYPE,
          resource: SUBTYPE,
          type: TYPE
        }
      )
      ElasticAPM.with_span(
        name,
        TYPE,
        subtype: SUBTYPE,
        context: context
      ) { perform_request_without_apm(method, path, *args, &block) }
    end
  end
end

def perform_request(method, path, *args, &block)

def perform_request(method, path, *args, &block)
  name = format(NAME_FORMAT, method, path)
  statement = args[0].is_a?(String) ? args[0] : args[0].to_json
  context = Span::Context.new(
    db: { statement: statement },
    destination: {
      name: SUBTYPE,
      resource: SUBTYPE,
      type: TYPE
    }
  )
  ElasticAPM.with_span(
    name,
    TYPE,
    subtype: SUBTYPE,
    context: context
  ) { perform_request_without_apm(method, path, *args, &block) }
end