class Blackbeard::MetricData::UidGenerator

Public Class Methods

new(metric_data) click to toggle source
# File lib/blackbeard/metric_data/uid_generator.rb, line 6
def initialize(metric_data)
  @metric = metric_data.metric
  @group = metric_data.group
  @cohort = metric_data.cohort
end

Public Instance Methods

uid() click to toggle source
# File lib/blackbeard/metric_data/uid_generator.rb, line 12
def uid
  db.hash_get(lookup_hash, lookup_field) || generate_uid
end

Private Instance Methods

generate_uid() click to toggle source
# File lib/blackbeard/metric_data/uid_generator.rb, line 29
def generate_uid
  uid = db.increment("metric_data_next_uid")
  # write and read to avoid race conditional writes
  db.hash_key_set_if_not_exists(lookup_hash, lookup_field, uid)
  db.hash_get(lookup_hash, lookup_field)
end
lookup_field() click to toggle source
# File lib/blackbeard/metric_data/uid_generator.rb, line 22
def lookup_field
  lookup_field = "metric-#{@metric.id}"
  lookup_field += "::group-#{@group.id}" if @group
  lookup_field += "::group-#{@cohort.id}" if @cohort
  lookup_field
end
lookup_hash() click to toggle source
# File lib/blackbeard/metric_data/uid_generator.rb, line 18
def lookup_hash
  "metric_data_keys"
end