Class: RailsPulse::Tables::Base

Inherits:
Object
  • Object
show all
Defined in:
app/models/rails_pulse/tables/base.rb

Constant Summary collapse

WEIGHTED_P95 =
"SUM(rails_pulse_summaries.p95_duration * rails_pulse_summaries.count) / NULLIF(SUM(rails_pulse_summaries.count), 0)"
WEIGHTED_P99 =
"SUM(rails_pulse_summaries.p99_duration * rails_pulse_summaries.count) / NULLIF(SUM(rails_pulse_summaries.count), 0)"

Instance Method Summary collapse

Constructor Details

#initialize(ransack_query:, period_type: nil, start_time:, params:, disabled_tags: [], show_non_tagged: true) ⇒ Base

Returns a new instance of Base.



7
8
9
10
11
12
13
14
# File 'app/models/rails_pulse/tables/base.rb', line 7

def initialize(ransack_query:, period_type: nil, start_time:, params:, disabled_tags: [], show_non_tagged: true)
  @ransack_query = ransack_query
  @period_type = period_type
  @start_time = start_time
  @params = params
  @disabled_tags = disabled_tags
  @show_non_tagged = show_non_tagged
end

Instance Method Details

#to_tableObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'app/models/rails_pulse/tables/base.rb', line 16

def to_table
  has_sorts = @ransack_query.sorts.any?

  base_query = @ransack_query.result(distinct: false).reorder(nil)
    .joins(join_clause)
    .where(summarizable_type: summarizable_type, period_type: @period_type)

  base_query = apply_tag_filters(base_query)
  base_query = apply_extra_filters(base_query)

  grouped_query = base_query
    .group(*group_columns)
    .select(*select_columns)

  if has_sorts
    sort = @ransack_query.sorts.first
    direction = sort.dir == "desc" ? :desc : :asc
    named_sort(grouped_query, sort.name, direction) || grouped_query.order(default_sort)
  else
    grouped_query.order(default_sort)
  end
end