Sha256: 71894da88427c2b673383c19e68ce58d91b79a7b87116c4620653d7d492a2126
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
module ForestLiana class ValueStatGetter < StatGetter attr_accessor :record def perform return if @params[:aggregate].blank? resource = optimize_record_loading(@resource, get_resource) filters = ForestLiana::ScopeManager.append_scope_for_user(@params[:filters], @user, @resource.name) unless filters.blank? filter_parser = FiltersParser.new(filters, resource, @params[:timezone]) resource = filter_parser.apply_filters raw_previous_interval = filter_parser.get_previous_interval_condition if raw_previous_interval previous_value = filter_parser.apply_filters_on_previous_interval(raw_previous_interval) end end @record = Model::Stat.new(value: { countCurrent: aggregate(resource), countPrevious: previous_value ? aggregate(previous_value) : nil }) end private def aggregate(value) aggregator = @params[:aggregate].downcase uniq = aggregator == 'count' if Rails::VERSION::MAJOR >= 4 if uniq # NOTICE: uniq is deprecated since Rails 5.0 value = Rails::VERSION::MAJOR >= 5 ? value.distinct : value.uniq end value.send(aggregator, aggregate_field) else value.send(aggregator, aggregate_field, distinct: uniq) end end def aggregate_field @params[:aggregate_field] || @resource.primary_key end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
forest_liana-7.8.2 | app/services/forest_liana/value_stat_getter.rb |