- Re-write the methods for clarity - Remove the dependency on the ReportHelper class. - Remove n+1 queries in the average metric time series data.
47 lines
869 B
Ruby
47 lines
869 B
Ruby
class V2::Reports::Timeseries::BaseTimeseriesBuilder
|
|
include TimezoneHelper
|
|
include DateRangeHelper
|
|
DEFAULT_GROUP_BY = 'day'.freeze
|
|
|
|
pattr_initialize :account, :params
|
|
|
|
def scope
|
|
case params[:type].to_sym
|
|
when :account
|
|
account
|
|
when :inbox
|
|
inbox
|
|
when :agent
|
|
user
|
|
when :label
|
|
label
|
|
when :team
|
|
team
|
|
end
|
|
end
|
|
|
|
def inbox
|
|
@inbox ||= account.inboxes.find(params[:id])
|
|
end
|
|
|
|
def user
|
|
@user ||= account.users.find(params[:id])
|
|
end
|
|
|
|
def label
|
|
@label ||= account.labels.find(params[:id])
|
|
end
|
|
|
|
def team
|
|
@team ||= account.teams.find(params[:id])
|
|
end
|
|
|
|
def group_by
|
|
@group_by ||= %w[day week month year hour].include?(params[:group_by]) ? params[:group_by] : DEFAULT_GROUP_BY
|
|
end
|
|
|
|
def timezone
|
|
@timezone ||= timezone_name_from_offset(params[:timezone_offset])
|
|
end
|
|
end
|