class Atatus::Normalizers::ActiveRecord::SqlNormalizer

@api private

Constants

ACTION
SKIP_NAMES
TYPE
UNKNOWN

Public Class Methods

new(*args) click to toggle source
Calls superclass method Atatus::Normalizers::Normalizer::new
# File lib/atatus/normalizers/rails/active_record.rb, line 34
def initialize(*args)
  super

  @summarizer = Sql.summarizer

  @adapters = {}
end

Public Instance Methods

normalize(_transaction, _name, payload) click to toggle source
# File lib/atatus/normalizers/rails/active_record.rb, line 42
def normalize(_transaction, _name, payload)
  return :skip if SKIP_NAMES.include?(payload[:name])

  name = summarize(payload[:sql]) || payload[:name]
  subtype = subtype_for(payload)

  context =
    Span::Context.new(
      db: { statement: payload[:sql], type: 'sql' },
      destination: { name: subtype, resource: subtype, type: TYPE }
    )

  [name, TYPE, subtype, ACTION, context]
end

Private Instance Methods

cached_adapter_name(adapter_name) click to toggle source
# File lib/atatus/normalizers/rails/active_record.rb, line 70
def cached_adapter_name(adapter_name)
  return UNKNOWN if adapter_name.nil? || adapter_name.empty?
  @adapters[adapter_name] ||
    (@adapters[adapter_name] = adapter_name.downcase)
rescue StandardError
  nil
end
subtype_for(payload) click to toggle source
# File lib/atatus/normalizers/rails/active_record.rb, line 59
def subtype_for(payload)
  cached_adapter_name(
    payload[:connection]&.adapter_name ||
      ::ActiveRecord::Base.connection_config[:adapter]
  )
end
summarize(sql) click to toggle source
# File lib/atatus/normalizers/rails/active_record.rb, line 66
def summarize(sql)
  @summarizer.summarize(sql)
end