# frozen_string_literal: true class Admin::Metrics::Measure::BaseMeasure def self.with_params? false end def initialize(start_at, end_at, params) @start_at = start_at&.to_datetime @end_at = end_at&.to_datetime @params = params end def key raise NotImplementedError end def total raise NotImplementedError end def previous_total raise NotImplementedError end def data raise NotImplementedError end def self.model_name self.class.name end def read_attribute_for_serialization(key) send(key) if respond_to?(key) end protected def time_period (@start_at..@end_at) end def previous_time_period ((@start_at - length_of_period)..(@end_at - length_of_period)) end def length_of_period @length_of_period ||= @end_at - @start_at end def params raise NotImplementedError end end