class Blackbeard::MetricData::Base
Attributes
cohort[R]
group[R]
metric[R]
Public Class Methods
new(metric, group = nil, cohort = nil)
click to toggle source
TODO: refactor so you pass group and cohort in as options
# File lib/blackbeard/metric_data/base.rb, line 16 def initialize(metric, group = nil, cohort = nil) @metric = metric @group = group @cohort = cohort end
Public Instance Methods
hour_keys_for_day(date)
click to toggle source
# File lib/blackbeard/metric_data/base.rb, line 22 def hour_keys_for_day(date) start_of_day = date.to_time Array(0..23).map{|x| start_of_day + (3600 * x) }.map{|t| key_for_hour(t) } end
key()
click to toggle source
# File lib/blackbeard/metric_data/base.rb, line 35 def key @key ||= begin "data::#{uid}" end end
result_for_day(date)
click to toggle source
# File lib/blackbeard/metric_data/base.rb, line 27 def result_for_day(date) key = key_for_date(date) result = db.hash_get_all(key) result = generate_result_for_day(date) if result.empty? result.each { |k,v| result[k] = v.to_f } result end
segments()
click to toggle source
# File lib/blackbeard/metric_data/base.rb, line 45 def segments [self.class::DEFAULT_SEGMENT] end
uid()
click to toggle source
# File lib/blackbeard/metric_data/base.rb, line 41 def uid uid = UidGenerator.new(self).uid end
Private Instance Methods
days_set_key()
click to toggle source
# File lib/blackbeard/metric_data/base.rb, line 67 def days_set_key "#{key}::days" end
generate_result_for_day(date)
click to toggle source
# File lib/blackbeard/metric_data/base.rb, line 51 def generate_result_for_day(date) date_key = key_for_date(date) hours_keys = hour_keys_for_day(date) result = merge_results(hours_keys) db.hash_multi_set(date_key, result) unless date == tz.now.to_date result end
hour_keys()
click to toggle source
# File lib/blackbeard/metric_data/base.rb, line 59 def hour_keys db.set_members(hours_set_key) end
hours_set_key()
click to toggle source
# File lib/blackbeard/metric_data/base.rb, line 63 def hours_set_key "#{key}::hours" end
key_for_date(date)
click to toggle source
# File lib/blackbeard/metric_data/base.rb, line 71 def key_for_date(date) "#{key}::#{ date.strftime("%Y%m%d") }" end
key_for_hour(time)
click to toggle source
# File lib/blackbeard/metric_data/base.rb, line 75 def key_for_hour(time) if time.kind_of?(Time) time = time.strftime("%Y%m%d%H") end "#{key}::#{ time }" end