Class: RailsPulse::Queries::Charts::AverageQueryTimes

Inherits:
Object
  • Object
show all
Defined in:
app/models/rails_pulse/queries/charts/average_query_times.rb

Instance Method Summary collapse

Constructor Details

#initialize(ransack_query:, group_by: :group_by_day, query: nil) ⇒ AverageQueryTimes

Returns a new instance of AverageQueryTimes.



5
6
7
8
9
# File 'app/models/rails_pulse/queries/charts/average_query_times.rb', line 5

def initialize(ransack_query:, group_by: :group_by_day, query: nil)
  @ransack_query = ransack_query
  @group_by = group_by
  @query = query
end

Instance Method Details

#to_rails_chartObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/models/rails_pulse/queries/charts/average_query_times.rb', line 11

def to_rails_chart
  # Get actual data using existing logic
  actual_data = if @query
    @ransack_query.result(distinct: false)
      .public_send(@group_by, "occurred_at", series: true, time_zone: "UTC")
      .average(:duration)
  else
    @ransack_query.result(distinct: false)
      .left_joins(:operations)
      .public_send(
        @group_by,
        "rails_pulse_operations.occurred_at",
        series: true,
        time_zone: "UTC"
      )
      .average("rails_pulse_operations.duration")
  end

  # Create full time range and fill in missing periods
  fill_missing_periods(actual_data)
end