discourse/lib/admin_dashboard/reports/bulk_fetch.rb
Osama Sayegh be54920a12
FEATURE: Customisable Reports section on the new admin dashboard (#40264)
Adds the frontend for the Reports section on the redesigned admin
dashboard. Admins can choose which reports appear on their dashboard,
reorder them, and add/remove cards via a "Manage reports" modal. A
plugin API lets plugins ship their own report providers and custom card
renderers — used by Data Explorer to surface DE queries alongside core
reports.

Follow-up to backend PR:
https://github.com/discourse/discourse/pull/40017
2026-05-25 13:55:25 +03:00

27 lines
750 B
Ruby
Vendored

# frozen_string_literal: true
module AdminDashboard
module Reports
class BulkFetch
def self.call(items:, filters:, guardian:)
per_source =
AdminDashboard::Reports::Registry.dispatch_per_source(items) do |provider, group|
identifiers = group.map { |i| i[:identifier] }
provider.fetch_many(identifiers, guardian:, filters:)
end
results =
items.map do |item|
{
source: item[:source],
identifier: item[:identifier],
key: "#{item[:source]}:#{item[:identifier]}",
data: per_source.dig(item[:source], item[:identifier]),
}
end
{ items: results }
end
end
end
end