# 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