Sha256: 9a3dd8a9ab4b4df7f5cef95fc7ca8cebff0561a2dc716dd9085cf00b04c54ecd

Contents?: true

Size: 1.58 KB

Versions: 12

Compression:

Stored size: 1.58 KB

Contents

# frozen_string_literal: true

module RailsMiniProfiler
  class SequelTracePresenter < TracePresenter
    def label
      sql_description
    end

    alias description label

    def payload
      return nil if transaction?

      content_tag('div') do
        content_tag('pre', class: 'trace-payload') do
          content_tag(:div, model.sql, class: 'sequel-trace-query')
        end + binding_content
      end
    end

    private

    def transaction?
      model.payload['name'] == 'TRANSACTION'
    end

    def schema?
      model.payload['name'] == 'SCHEMA'
    end

    def sql_description
      if transaction?
        transaction_description
      elsif schema?
        'Load Schema'
      elsif model.payload['name'].present?
        model.payload['name']
      else
        model.payload['sql'].truncate(15)
      end
    end

    def transaction_description
      # The raw SQL is something like 'BEGIN TRANSACTION', and we just turn it into 'Begin Transaction', which is less
      # loud and nicer to look at.
      model.sql.split.map(&:capitalize).join(' ')
    end

    def binding_content
      return nil if simple_binds.empty?

      content = simple_binds.collect do |hash|
        flat = hash.to_a.flatten
        "#{flat.first}=#{flat.second}"
      end
      content_tag(:pre, content.join(', '), class: 'sequel-trace-binds')
    end

    def simple_binds
      return [] if model.binds.nil? || model.binds.empty?

      model.binds.each_with_object({}) do |hash, object|
        name = hash['name']
        value = hash['value']
        object[name] = value
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
rails_mini_profiler-0.7.0 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb
rails_mini_profiler-0.6.0 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb
rails_mini_profiler-0.5.0 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb
rails_mini_profiler-0 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb
rails_mini_profiler-0.4.0 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb
rails_mini_profiler-0.3.0 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb
rails_mini_profiler-0.2.1 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb
rails_mini_profiler-0.2.0 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb
rails_mini_profiler-0.1.3 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb
rails_mini_profiler-0.1.2 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb
rails_mini_profiler-0.1.1 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb
rails_mini_profiler-0.1.0 app/presenters/rails_mini_profiler/sequel_trace_presenter.rb