Class: Almicube::RangedRanking

Inherits:
Ranking
  • Object
show all
Defined in:
lib/almicube/ranged_ranking.rb

Constant Summary

Constants inherited from Ranking

Almicube::Ranking::KEY_PATTERN

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Ranking

#aggregate!, #all, #attribute_name, build, connection, #date, default_options, #exists?, #incr, #initialize, #key, #page, #per_page, #per_page=, #ranged, #rank, #score

Constructor Details

This class inherits a constructor from Almicube::Ranking

Class Method Details

.overwrite_paramsObject



4
5
6
# File 'lib/almicube/ranged_ranking.rb', line 4

def overwrite_params
  { key: '%{prefix}:%{class_name}:%{range}:%{suffix}', type: :range }
end

Instance Method Details

#aggregate(options = {}) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/almicube/ranged_ranking.rb', line 9

def aggregate(options={})
  keys = range_days(range).times.inject([]) do |keys, i|
    key = key_format(@options[:data_key], @options.merge( date: date.to_date - i.days, type: :data ))
    keys << key if connection.exists key
    keys
  end
  connection.zunionstore key, keys, aggregate: :sum
end

#default_rangeObject



22
23
24
# File 'lib/almicube/ranged_ranking.rb', line 22

def default_range
  :weekly
end

#rangeObject



18
19
20
# File 'lib/almicube/ranged_ranking.rb', line 18

def range
  @options.fetch(:range, default_range)
end