class ElasticAPM::Spies::SequelSpy

@api private

def self.build_context(sql, opts)

def self.build_context(sql, opts)
  Span::Context.new(
    db: { statement: sql, type: 'sql', user: opts[:user] }
  )
end

def self.summarizer

def self.summarizer
  @summarizer ||= SqlSummarizer.new
end

def install

rubocop:disable Metrics/MethodLength
def install
  require 'sequel/database/logging'
  ::Sequel::Database.class_eval do
    alias log_connection_yield_without_apm log_connection_yield
    def log_connection_yield(sql, *args, &block)
      unless ElasticAPM.current_transaction
        return log_connection_yield_without_apm(sql, *args, &block)
      end
      summarizer = ElasticAPM::Spies::SequelSpy.summarizer
      name = summarizer.summarize sql
      context = ElasticAPM::Spies::SequelSpy.build_context(sql, opts)
      ElasticAPM.with_span(name, TYPE, context: context, &block)
    end
  end
end

def log_connection_yield(sql, *args, &block)

def log_connection_yield(sql, *args, &block)
  unless ElasticAPM.current_transaction
    return log_connection_yield_without_apm(sql, *args, &block)
  end
  summarizer = ElasticAPM::Spies::SequelSpy.summarizer
  name = summarizer.summarize sql
  context = ElasticAPM::Spies::SequelSpy.build_context(sql, opts)
  ElasticAPM.with_span(name, TYPE, context: context, &block)
end