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

34 lines
816 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