module Dynamoid::Adapter::Local

Public Instance Methods

batch_get_item(options) click to toggle source

BatchGetItem

# File lib/dynamoid/adapter/local.rb, line 16
def batch_get_item(options)
  Hash.new { |h, k| h[k] = Array.new }.tap do |hash|
    options.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) click to toggle source

CreateTable

# File lib/dynamoid/adapter/local.rb, line 28
def create_table(table_name, key)
  data[table_name] = {:id => key, :data => {}}
end
data() click to toggle source

Gimpy hash that should be somewhat equivalent to what Amazon's actual DynamoDB, for offline development.

# File lib/dynamoid/adapter/local.rb, line 7
def data
  @data ||= {}
end
delete_item(table_name, key) click to toggle source

DeleteItem

# 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) click to toggle source

DeleteTable

# File lib/dynamoid/adapter/local.rb, line 38
def delete_table(table_name)
  data.delete(table_name)
end
get_item(table_name, key) click to toggle source

GetItem

# File lib/dynamoid/adapter/local.rb, line 45
def get_item(table_name, key)
  data[table_name][:data][key]
end
list_tables() click to toggle source

ListTables

# File lib/dynamoid/adapter/local.rb, line 50
def list_tables
  data.keys
end
put_item(table_name, object) click to toggle source

PutItem

# 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) click to toggle source

Query

# File lib/dynamoid/adapter/local.rb, line 61
def query(table_name, id)
  get_item(table_name, id)
end
reset_data() click to toggle source
# File lib/dynamoid/adapter/local.rb, line 11
def reset_data
  self.data.each {|k, v| v[:data] = {}}
end
scan(table_name, scan_hash) click to toggle source

Scan

# 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