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 29 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 18 def batch_get_item() batch = AWS::DynamoDB::BatchGet.new(:config => @@connection.config) hash = Hash.new{|h, k| h[k] = []} return hash if .all?{|k, v| v.empty?} .each do |t, ids| batch.table(t, :all, Array(ids)) unless ids.nil? || ids.empty? end 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
32 33 34 35 36 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 32 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
39 40 41 42 43 44 45 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 39 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
48 49 50 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 48 def delete_table(table_name) @@connection.tables[table_name].delete end |
#get_item(table_name, key) ⇒ Object
GetItem
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 55 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
67 68 69 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 67 def list_tables @@connection.tables.collect(&:name) end |
#put_item(table_name, object) ⇒ Object
PutItem
72 73 74 75 76 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 72 def put_item(table_name, object) table = @@connection.tables[table_name] table.load_schema table.items.create(object.delete_if{|k, v| v.nil? || v.empty?}) end |
#query(table_name, id) ⇒ Object
Query
79 80 81 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 79 def query(table_name, id) get_item(table_name, id) end |
#scan(table_name, scan_hash) ⇒ Object
Scan
84 85 86 87 88 89 90 91 92 |
# File 'lib/dynamoid/adapter/aws_sdk.rb', line 84 def scan(table_name, scan_hash) table = @@connection.tables[table_name] table.load_schema results = [] table.items.where(scan_hash).select do |data| results << data.attributes.symbolize_keys! end results end |