discourse/app/models/admin_dashboard_next_data.rb

47 lines
901 B
Ruby

class AdminDashboardNextData
include StatsCacheable
GLOBAL_REPORTS ||= [
'signups',
'topics',
'trending_search',
'new_contributors'
]
USER_REPORTS ||= [
'users_by_trust_level',
'users_by_type'
]
def initialize(opts = {})
@opts = opts
end
def self.fetch_stats
AdminDashboardNextData.new.as_json
end
def self.stats_cache_key
'dash-next-stats'
end
def as_json(_options = nil)
@json ||= {
global_reports: AdminDashboardNextData.reports(GLOBAL_REPORTS),
user_reports: AdminDashboardNextData.reports(USER_REPORTS),
last_backup_taken_at: last_backup_taken_at,
updated_at: Time.zone.now.as_json
}
end
def last_backup_taken_at
if last_backup = Backup.all.last
File.ctime(last_backup.path).utc
end
end
def self.reports(source)
source.map { |type| Report.find(type).as_json }
end
end