Module: Dynamoid::Adapter::Local
Instance Method Summary collapse
-
#batch_get_item(options) ⇒ Object
BatchGetItem.
-
#create_table(table_name, key) ⇒ Object
CreateTable.
-
#data ⇒ Object
Gimpy hash that should be somewhat equivalent to what Amazon’s actual DynamoDB, for offline development.
-
#delete_item(table_name, key) ⇒ Object
DeleteItem.
-
#delete_table(table_name) ⇒ Object
DeleteTable.
-
#get_item(table_name, key) ⇒ Object
GetItem.
-
#list_tables ⇒ Object
ListTables.
-
#put_item(table_name, object) ⇒ Object
PutItem.
-
#query(table_name, id) ⇒ Object
Query.
- #reset_data ⇒ Object
-
#scan(table_name, scan_hash) ⇒ Object
Scan.
Instance Method Details
#batch_get_item(options) ⇒ Object
BatchGetItem
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/dynamoid/adapter/local.rb', line 16 def batch_get_item() Hash.new { |h, k| h[k] = Array.new }.tap do |hash| .each do |table_name, keys| table = data[table_name] Array(keys).each do |key| hash[table_name] << table[:data][key] end end end end |
#create_table(table_name, key) ⇒ Object
CreateTable
28 29 30 |
# File 'lib/dynamoid/adapter/local.rb', line 28 def create_table(table_name, key) data[table_name] = {:id => key, :data => {}} end |
#data ⇒ Object
Gimpy hash that should be somewhat equivalent to what Amazon’s actual DynamoDB, for offline development.
7 8 9 |
# File 'lib/dynamoid/adapter/local.rb', line 7 def data @data ||= {} end |
#delete_item(table_name, key) ⇒ Object
DeleteItem
33 34 35 |
# File 'lib/dynamoid/adapter/local.rb', line 33 def delete_item(table_name, key) data[table_name][:data].delete(key) end |
#delete_table(table_name) ⇒ Object
DeleteTable
38 39 40 |
# File 'lib/dynamoid/adapter/local.rb', line 38 def delete_table(table_name) data.delete(table_name) end |
#get_item(table_name, key) ⇒ Object
GetItem
45 46 47 |
# File 'lib/dynamoid/adapter/local.rb', line 45 def get_item(table_name, key) data[table_name][:data][key] end |
#list_tables ⇒ Object
ListTables
50 51 52 |
# File 'lib/dynamoid/adapter/local.rb', line 50 def list_tables data.keys end |
#put_item(table_name, object) ⇒ Object
PutItem
55 56 57 58 |
# File 'lib/dynamoid/adapter/local.rb', line 55 def put_item(table_name, object) table = data[table_name] table[:data][object[table[:id]]] = object end |
#query(table_name, id) ⇒ Object
Query
61 62 63 |
# File 'lib/dynamoid/adapter/local.rb', line 61 def query(table_name, id) get_item(table_name, id) end |
#reset_data ⇒ Object
11 12 13 |
# File 'lib/dynamoid/adapter/local.rb', line 11 def reset_data self.data.each {|k, v| v[:data] = {}} end |
#scan(table_name, scan_hash) ⇒ Object
Scan
66 67 68 69 |
# File 'lib/dynamoid/adapter/local.rb', line 66 def scan(table_name, scan_hash) return [] if data[table_name].nil? data[table_name][:data].values.select{|d| scan_hash.all?{|k, v| !d[k].nil? && d[k] == v}} end |