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