class Honeybadger::Breadcrumbs::ActiveSupport

def self.active_record_connection_db_config

def self.active_record_connection_db_config
Base.respond_to?(:connection_db_config)
ase.connection_db_config.configuration_hash
ase.connection_config

def self.default_notifications

def self.default_notifications
  {
    # ActiveRecord Actions
    #
    "sql.active_record" => {
      message: lambda do |data|
        # Disregard empty string names
        name = data[:name] if data[:name] && !data[:name].strip.empty?
        ["Active Record", name].compact.join(" - ")
      end,
      category: "query",
      select_keys: [:sql, :name, :connection, :connection_id, :cached],
      transform: lambda do |data|
        if data[:sql]
          connection = data.delete(:connection)
          adapter = (connection && connection.adapter_name.downcase) || active_record_connection_db_config[:adapter]
          data[:sql] = Util::SQL.obfuscate(data[:sql], adapter)
        end
        data
      end,
      exclude_when: lambda do |data|
        # Ignore schema, begin, and commit transaction queries
        data[:name] == "SCHEMA" ||
          (data[:sql] && (Util::SQL.force_utf_8(data[:sql].dup) =~ /^(begin|commit)( transaction)?$/i))
      end
    },
    # ActionCable Actions
    #
    "perform_action.action_cable" => {
      message: "Action Cable Perform Action",
      select_keys: [:channel_class, :action],
      category: "render"
    },
    # ActiveJob Actions
    #
    "enqueue.active_job" => {
      message: "Active Job Enqueue",
      select_keys: [],
      category: "job"
    },
    "perform_start.active_job" => {
      message: "Active Job Perform Start",
      select_keys: [],
      category: "job",
    },
    # ActiveSupport Actions
    #
    "cache_read.active_support" => {
      message: "Active Support Cache Read",
      category: "query"
    },
    "cache_fetch_hit.active_support" => {
      message: "Active Support Cache Fetch Hit",
      category: "query"
    },
    # Controller Actions
    #
    "halted_callback.action_controller" => {
      message: "Action Controller Callback Halted",
      category: "request",
    },
    "process_action.action_controller" => {
      message: "Action Controller Action Process",
      select_keys: [:controller, :action, :format, :method, :path, :status, :view_runtime, :db_runtime],
      category: "request",
    },
    "start_processing.action_controller" => {
      message: "Action Controller Start Process",
      select_keys: [:controller, :action, :format, :method, :path],
      category: "request",
    },
    "redirect_to.action_controller" => {
      message: "Action Controller Redirect",
      category: "request",
    },
    # View Actions
    #
    "render_template.action_view" => {
      message: "Action View Template Render",
      category: "render",
    },
    "render_partial.action_view" => {
      message: "Action View Partial Render",
      category: "render",
    },
    # Mailer actions
    #
    "deliver.action_mailer" => {
      message: "Action Mailer Deliver",
      select_keys: [:mailer, :message_id, :from, :date],
      category: "render"
    }
  }
end