Module: ActiveColumn::ClassMethods

Defined in:
lib/active_column/base.rb

Instance Method Summary collapse

Instance Method Details

#column_family(column_family = nil) ⇒ Object



9
10
11
12
# File 'lib/active_column/base.rb', line 9

def column_family(column_family = nil)
  return @column_family || self.name.tableize.to_sym if column_family.nil?
  @column_family = column_family
end

#find(key_parts, options = {}) ⇒ Object



23
24
25
26
27
28
# File 'lib/active_column/base.rb', line 23

def find(key_parts, options = {})
  keys = generate_keys key_parts
  ActiveColumn.connection.multi_get(column_family, keys, options).each_with_object( {} ) do |(user, row), results|
    results[user] = row.to_a.collect { |(_uuid, col)| new(ActiveSupport::JSON.decode(col)) }
  end
end

#generate_keys(key_parts) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/active_column/base.rb', line 30

def generate_keys(key_parts)
  if keys.size == 1
    key_config = keys.first
    value = key_parts.is_a?(Hash) ? key_parts[key_config.key] : key_parts
    return value if value.is_a? Array
    return [value]
  end

  values = keys.collect { |kc| key_parts[kc.key] }
  product = values.reduce do |memo, key_part|
    memo     = [memo]     unless memo.is_a? Array
    key_part = [key_part] unless key_part.is_a? Array
    memo.product key_part
  end

  product.collect { |p| p.join(':') }
end

#key(key, options = {}) ⇒ Object



14
15
16
17
# File 'lib/active_column/base.rb', line 14

def key(key, options = {})
  @keys ||= []
  @keys << KeyConfig.new(key, options)
end

#keysObject



19
20
21
# File 'lib/active_column/base.rb', line 19

def keys
  @keys
end