Class: ActiveAnalytics::ViewsPerDay

Inherits:
ApplicationRecord show all
Defined in:
app/models/active_analytics/views_per_day.rb

Defined Under Namespace

Classes: Page, Site

Constant Summary collapse

SLASH =
"/"

Class Method Summary collapse

Class Method Details

.append(params) ⇒ Object



61
62
63
64
65
66
67
68
# File 'app/models/active_analytics/views_per_day.rb', line 61

def self.append(params)
  total = params.delete(:total) || 1
  params[:site] = params[:site].downcase if params[:site]
  params[:referrer_path] = nil if params[:referrer_path].blank?
  params[:referrer_path] = params[:referrer_path].downcase if params[:referrer_path]
  params[:referrer_host] = params[:referrer_host].downcase if params[:referrer_host]
  where(params).first.try(:increment!, :total, total) || create!(params.merge(total: total))
end

.group_by_dateObject



53
54
55
# File 'app/models/active_analytics/views_per_day.rb', line 53

def self.group_by_date
  group(:date).select("date, sum(total) AS total")
end

.group_by_pageObject



35
36
37
38
39
# File 'app/models/active_analytics/views_per_day.rb', line 35

def self.group_by_page
  group(:site, :page).pluck("site, page, SUM(total)").map do |row|
    Page.new(row[0], row[1], row[2])
  end
end

.group_by_referrer_pageObject



47
48
49
50
51
# File 'app/models/active_analytics/views_per_day.rb', line 47

def self.group_by_referrer_page
  group(:referrer_host, :referrer_path).pluck("referrer_host, referrer_path, SUM(total)").map do |row|
    Page.new(row[0], row[1], row[2])
  end
end

.group_by_referrer_siteObject



41
42
43
44
45
# File 'app/models/active_analytics/views_per_day.rb', line 41

def self.group_by_referrer_site
  group(:referrer_host).pluck("referrer_host, SUM(total)").map do |row|
    Site.new(row[0], row[1])
  end
end

.group_by_siteObject



29
30
31
32
33
# File 'app/models/active_analytics/views_per_day.rb', line 29

def self.group_by_site
  group(:site).pluck("site, SUM(total)").map do |row|
    Site.new(row[0], row[1])
  end
end

.split_referrer(referrer) ⇒ Object



72
73
74
75
76
77
78
79
80
# File 'app/models/active_analytics/views_per_day.rb', line 72

def self.split_referrer(referrer)
  return [nil, nil] if referrer.blank?
  if (uri = URI(referrer)).host.present?
    [uri.host, uri.path.presence]
  else
    strings = referrer.split(SLASH, 2)
    [strings[0], strings[1] ? SLASH + strings[1] : nil]
  end
end

.to_histogramObject



57
58
59
# File 'app/models/active_analytics/views_per_day.rb', line 57

def self.to_histogram
  Histogram.new(self)
end