Class: Mara::Persistence
- Inherits:
-
Object
- Object
- Mara::Persistence
- Includes:
- DynamoHelpers
- Defined in:
- lib/mara/persistence.rb
Overview
Perform calls to DynamoDB for saving/updating/deleting
Defined Under Namespace
Classes: CreateRequest, DestroyRequest, Error, Response
Class Method Summary collapse
-
.delete_model(item) ⇒ true, false
Delete an item.
-
.delete_model!(item) ⇒ void
Delete an item.
-
.perform_requests(client, table_name, requests, group_size = 10) ⇒ Object
Perform a batch of save requests.
-
.save_model(item) ⇒ true, false
Perform a save on a item.
-
.save_model!(item) ⇒ void
Perform a save on the a item.
Methods included from DynamoHelpers
Class Method Details
.delete_model(item) ⇒ true, false
Delete an item.
135 136 137 138 139 140 141 142 143 |
# File 'lib/mara/persistence.rb', line 135 def delete_model(item) delete = DestroyRequest.new(item) response = perform_requests( Mara::Client.shared, Mara.config.dynamodb.table_name, [delete] ) !response.nil? end |
.delete_model!(item) ⇒ void
This method returns an undefined value.
Delete an item.
155 156 157 158 159 |
# File 'lib/mara/persistence.rb', line 155 def delete_model!(item) return if delete_model(item) raise Error, 'Failed to delete!' end |
.perform_requests(client, table_name, requests, group_size = 10) ⇒ Object
Perform a batch of save requests.
163 164 165 166 167 168 169 170 171 172 173 |
# File 'lib/mara/persistence.rb', line 163 def perform_requests(client, table_name, requests, group_size = 10) results = Mara.instrument('save_batch_records', requests: requests, table_name: table_name) do requests.each_slice(group_size).map do |sub_requests| _perform_requests(client, table_name, sub_requests) end end Response.new( results.map(&:consumed_capacity).sum, results.map(&:operation_count).sum ) end |
.save_model(item) ⇒ true, false
Perform a save on a item.
103 104 105 106 107 108 109 110 111 |
# File 'lib/mara/persistence.rb', line 103 def save_model(item) create = CreateRequest.new(item) response = perform_requests( Mara::Client.shared, Mara.config.dynamodb.table_name, [create] ) !response.nil? end |
.save_model!(item) ⇒ void
This method returns an undefined value.
Perform a save on the a item.
123 124 125 126 127 |
# File 'lib/mara/persistence.rb', line 123 def save_model!(item) return if save_model(item) raise Error, 'Failed to save!' end |