Class: WebHookEventsDailyAggregate

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/web_hook_events_daily_aggregate.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.by_day(start_date, end_date, web_hook_id = nil) ⇒ Object



13
14
15
16
17
# File 'app/models/web_hook_events_daily_aggregate.rb', line 13

def self.by_day(start_date, end_date, web_hook_id = nil)
  result = where("date >= ? AND date <= ?", start_date.to_date, end_date.to_date)
  result = result.where(web_hook_id: web_hook_id) if web_hook_id
  result
end

.purge_oldObject



9
10
11
# File 'app/models/web_hook_events_daily_aggregate.rb', line 9

def self.purge_old
  where("created_at < ?", SiteSetting.retain_web_hook_events_aggregate_days.days.ago).delete_all
end

Instance Method Details

#aggregate!Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'app/models/web_hook_events_daily_aggregate.rb', line 19

def aggregate!
  events =
    WebHookEvent.where(
      "created_at >= ? AND created_at < ? AND web_hook_id = ?",
      self.date,
      self.date + 1.day,
      self.web_hook_id,
    )

  if events.empty?
    self.mean_duration = 0
    self.successful_event_count = 0
    self.failed_event_count = 0
    return
  end

  self.mean_duration = events.sum(:duration) / events.count
  self.successful_event_count = events.where("status >= 200 AND status <= 299").count
  self.failed_event_count = events.where("status < 200 OR status > 299").count
end