Skip to Content Skip to Search
Methods
A
D
U
Included Modules

Class Public methods

all_time_count_for(site:, content_type:)

# File app/models/analytics/view_count.rb, line 38
def all_time_count_for(site:, content_type:)
  collection.aggregate(
    [
      {:$match => {siteId: site.id, contentType: content_type}},
      {:$group => {_id: nil, totalViews: {:$sum => "$totalViews"}}}
    ]
  ).entries.dig(0, "totalViews").presence || 0
end

upsert(content: nil, details: {})

# File app/models/analytics/view_count.rb, line 20
def upsert(content: nil, details: {})
  return false unless content.present?

  site_id = content.site_id
  content_id = content.id
  content_type = content.class.name

  day = I18n.l(Time.current, format: :analytics).to_i

  collection.bulk_write(
    [
      update_current_day_counter(site_id, content_id, content_type, day, details),
      create_current_day_counter(site_id, content_id, content_type, day, details),
      initialize_global_counter(site_id, content_id, content_type, day, details)
    ]
  )
end

Instance Public methods

action()

# File app/models/analytics/view_count.rb, line 107
def action
  "view_count"
end

action_family()

# File app/models/analytics/view_count.rb, line 111
def action_family
  "traffic"
end

details()

# File app/models/analytics/view_count.rb, line 101
def details
  (super.presence || {}).transform_keys do |key|
    key.to_s.humanize
  end
end