Class: Mingle::KeyvalueStore::DynamodbBased

Inherits:
Object
  • Object
show all
Defined in:
lib/mingle_keyvalue_store.rb

Instance Method Summary collapse

Constructor Details

#initialize(table_name, key_column, value_column) ⇒ DynamodbBased

Returns a new instance of DynamodbBased.



81
82
83
84
85
86
# File 'lib/mingle_keyvalue_store.rb', line 81

def initialize(table_name, key_column, value_column)
  @key_column = key_column.to_s
  @value_column = value_column.to_s
  @table_name = table_name
  @table = Aws::DynamoDB::Resource.new.table(table_name)
end

Instance Method Details

#[](store_key) ⇒ Object



88
89
90
91
92
# File 'lib/mingle_keyvalue_store.rb', line 88

def [](store_key)
  if item = @table.get_item(key: {@key_column => store_key}).item
    item[@value_column]
  end
end

#[]=(store_key, value) ⇒ Object

Raises:

  • (ArgumentError)


94
95
96
97
# File 'lib/mingle_keyvalue_store.rb', line 94

def []=(store_key, value)
  raise ArgumentError, 'Value must be String' unless value.is_a?(String)
  @table.put_item(item: {@key_column => store_key, @value_column => value})
end

#all_itemsObject



110
111
112
# File 'lib/mingle_keyvalue_store.rb', line 110

def all_items
  all_items_from_table
end

#clearObject



99
100
101
102
103
104
# File 'lib/mingle_keyvalue_store.rb', line 99

def clear
  all_items_from_table.each do |item|
    @table.delete_item(key: {@key_column => item['testkey']})
  end
  nil
end

#delete(key) ⇒ Object



114
115
116
117
# File 'lib/mingle_keyvalue_store.rb', line 114

def delete(key)
  @table.delete_item(key: {@key_column => key})
  nil
end

#namesObject



106
107
108
# File 'lib/mingle_keyvalue_store.rb', line 106

def names
  all_items_from_table(attributes_to_get: [@key_column]).map{|hash| hash[@key_column]}
end