Module: Dynamoid::Adapter::AwsSdk
Constant Summary collapse
- @@connection =
nil
Instance Method Summary collapse
-
#batch_get_item(options) ⇒ Object
BatchGetItem.
- #connect! ⇒ Object
- #connection ⇒ Object
-
#create_table(table_name, key) ⇒ Object
CreateTable.
-
#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.
-
#scan(table_name, scan_hash) ⇒ Object
Scan.
Instance Method Details
#batch_get_item(options) ⇒ Object
BatchGetItem
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 18 def batch_get_item() batch = AWS::DynamoDB::BatchGet.new(:config => @@connection.config) .each do |t, ids| batch.table(t, :all, Array(ids)) end hash = Hash.new{|h, k| h[k] = []} batch.each do |table_name, attributes| hash[table_name] << attributes.symbolize_keys! end hash end |
#connect! ⇒ Object
9 10 11 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 9 def connect! @@connection = AWS::DynamoDB.new(:access_key_id => Dynamoid::Config.access_key, :secret_access_key => Dynamoid::Config.secret_key) end |
#connection ⇒ Object
13 14 15 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 13 def connection @@connection end |
#create_table(table_name, key) ⇒ Object
CreateTable
31 32 33 34 35 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 31 def create_table(table_name, key) table = @@connection.tables.create(table_name, 10, 5, :hash_key => {key.to_sym => :string}) sleep 0.5 while table.status == :creating return table end |
#delete_item(table_name, key) ⇒ Object
DeleteItem
38 39 40 41 42 43 44 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 38 def delete_item(table_name, key) table = @@connection.tables[table_name] table.load_schema result = table.items[key] result.delete unless result.attributes.to_h.empty? true end |
#delete_table(table_name) ⇒ Object
DeleteTable
47 48 49 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 47 def delete_table(table_name) @@connection.tables[table_name].delete end |
#get_item(table_name, key) ⇒ Object
GetItem
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 54 def get_item(table_name, key) table = @@connection.tables[table_name] table.load_schema result = table.items[key].attributes.to_h if result.empty? nil else result.symbolize_keys! end end |
#list_tables ⇒ Object
ListTables
66 67 68 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 66 def list_tables @@connection.tables.collect(&:name) end |
#put_item(table_name, object) ⇒ Object
PutItem
71 72 73 74 75 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 71 def put_item(table_name, object) table = @@connection.tables[table_name] table.load_schema table.items.create(object.delete_if{|k, v| v.nil?}) end |
#query(table_name, id) ⇒ Object
Query
78 79 80 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 78 def query(table_name, id) get_item(table_name, id) end |
#scan(table_name, scan_hash) ⇒ Object
Scan
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 83 def scan(table_name, scan_hash) table = @@connection.tables[table_name] table.load_schema results = [] table.items.select do |data| attributes = data.attributes.symbolize_keys! results << attributes if scan_hash.all?{|k, v| !attributes[k].nil? && attributes[k] == v} end results end |