discourse/app/models/concerns/reports/web_crawlers.rb

31 lines
775 B
Ruby

# frozen_string_literal: true
module Reports::WebCrawlers
extend ActiveSupport::Concern
class_methods do
def report_web_crawlers(report)
report.labels = [
{
type: :string,
property: :user_agent,
title: I18n.t('reports.web_crawlers.labels.user_agent')
},
{
property: :count,
type: :number,
title: I18n.t('reports.web_crawlers.labels.page_views')
}
]
report.modes = [:table]
report.data = WebCrawlerRequest.where('date >= ? and date <= ?', report.start_date, report.end_date)
.limit(200)
.order('sum_count DESC')
.group(:user_agent).sum(:count)
.map { |ua, count| { user_agent: ua, count: count } }
end
end
end