class Blackbeard::MetricData::Total

Constants

DEFAULT_SEGMENT

Public Instance Methods

add(uid, amount = 1, segment = DEFAULT_SEGMENT) click to toggle source
# File lib/blackbeard/metric_data/total.rb, line 9
def add(uid, amount = 1, segment = DEFAULT_SEGMENT)
  add_at(tz.now, uid, amount, segment)
end
add_at(time, uid, amount = 1, segment = DEFAULT_SEGMENT) click to toggle source
# File lib/blackbeard/metric_data/total.rb, line 13
def add_at(time, uid, amount = 1, segment = DEFAULT_SEGMENT)
  # TODO: ensure time is in correct timezone
  key = key_for_hour(time)
  db.set_add_member(hours_set_key, key)
  db.hash_increment_by_float(key, segment, amount.to_f)
  # TODO: if not today, blow away rollup keys
end
result_for_hour(time) click to toggle source
# File lib/blackbeard/metric_data/total.rb, line 21
def result_for_hour(time)
  key = key_for_hour(time)
  result = db.hash_get_all(key)
  result.each{ |k,v| result[k] = v.to_f }
  result
end

Private Instance Methods

merge_results(keys) click to toggle source
# File lib/blackbeard/metric_data/total.rb, line 30
def merge_results(keys)
  merged_results = {}
  keys.each do |key|
    result = db.hash_get_all(key)
    result.each{ |k,v| merged_results[k] ||= 0; merged_results[k] += v.to_f}
  end
  merged_results
end