dynamodb_framework 1.5.2 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: bc49f68b676b1c89e2ca6dbb4c26d21e55b64e65
4
- data.tar.gz: 10048c3d4ca703ed3b5b08af98c6ce82f8e9bdfc
2
+ SHA256:
3
+ metadata.gz: a38a1f91daf2b721a7f09e6f4ff5d9a796f8d0b22f09908d46717f96e9a0661b
4
+ data.tar.gz: 46d2c82a0ab2042abaf0e3dd317038eda3861e40006ac4eed1067b9da9d4fd01
5
5
  SHA512:
6
- metadata.gz: 6f195b4b78087f0d6b6321224dab72978b7f2acc075c4856fea9c9aa681d4a68ce9267837b3e8bf432c66a2e7bccc6f2bb8f17a0041bee4f3c3e74eaa8791570
7
- data.tar.gz: ca6d31d38bebc5937bf70f092f261e5e6af13a96800606bf0206508f8dd85a36db0cca7f7f9698026072115c5c3a779676405a49ddb18251bef3a1c7a9c62708
6
+ metadata.gz: 4e4c59111999afe7ae06282a121e0c46c2ac5935dc006e2630d83a4c26a9afd760d9a7f120c720e4471d633f4f4db83d5609bb0b1b48aaebf517b8b8a6698208
7
+ data.tar.gz: 2e3161f248e86fe8d65145c9b9483b0f7f90f179a8fd1c93e60b4b7c6eaf571387754c9dabb89def3b015755f61d87e9faad66a1267ca5454b9cfce00562f937
@@ -60,5 +60,9 @@ module DynamoDbFramework
60
60
 
61
61
  end
62
62
 
63
+ def contains(name:)
64
+ @attributes.detect { |a| a[:name] == name } != nil
65
+ end
66
+
63
67
  end
64
68
  end
@@ -46,13 +46,19 @@ module DynamoDbFramework
46
46
  self.instance_variable_set(:@range_key, { field: field, type: type })
47
47
  end
48
48
 
49
- def create(store: DynamoDbFramework.default_store, read_capacity: 25, write_capacity: 25)
49
+ def create(store: DynamoDbFramework.default_store, read_capacity: 25, write_capacity: 25, submit: true, billing_mode: 'PROVISIONED')
50
50
  unless self.instance_variable_defined?(:@table)
51
51
  raise DynamoDbFramework::Index::InvalidConfigException.new('Table must be specified.')
52
52
  end
53
53
  table = self.instance_variable_get(:@table)
54
54
  table_name = table.config[:table_name]
55
55
 
56
+ #make method idempotent
57
+ if exists?(store: store)
58
+ wait_until_active(store: store)
59
+ return
60
+ end
61
+
56
62
  unless self.instance_variable_defined?(:@partition_key)
57
63
  raise DynamoDbFramework::Index::InvalidConfigException.new('Partition key must be specified.')
58
64
  end
@@ -78,9 +84,13 @@ module DynamoDbFramework
78
84
 
79
85
  range_key_field = range_key[:field] unless range_key == nil
80
86
 
81
- index =table_manager.create_global_index(full_index_name, partition_key[:field], range_key_field, read_capacity, write_capacity)
87
+ index =table_manager.create_global_index(full_index_name, partition_key[:field], range_key_field, read_capacity, write_capacity, billing_mode)
88
+
89
+ if submit
90
+ table_manager.add_index(table_name, builder.attributes, index, billing_mode)
91
+ end
82
92
 
83
- table_manager.add_index(table_name, builder.attributes, index)
93
+ index
84
94
  end
85
95
 
86
96
  def update(store: DynamoDbFramework.default_store, read_capacity:, write_capacity:)
@@ -99,6 +109,10 @@ module DynamoDbFramework
99
109
  table = self.instance_variable_get(:@table)
100
110
  table_name = table.config[:table_name]
101
111
 
112
+ unless exists?(store: store)
113
+ return
114
+ end
115
+
102
116
  DynamoDbFramework::TableManager.new(store).drop_index(table_name, full_index_name)
103
117
  end
104
118
 
@@ -111,6 +125,15 @@ module DynamoDbFramework
111
125
  DynamoDbFramework::TableManager.new(store).has_index?(table_name, full_index_name)
112
126
  end
113
127
 
128
+ def wait_until_active(store: DynamoDbFramework.default_store)
129
+ unless self.instance_variable_defined?(:@table)
130
+ raise DynamoDbFramework::Index::InvalidConfigException.new('Table must be specified.')
131
+ end
132
+ table = self.instance_variable_get(:@table)
133
+ table_name = table.config[:table_name]
134
+ DynamoDbFramework::TableManager.new(store).wait_until_index_active(table_name, full_index_name)
135
+ end
136
+
114
137
  def query(partition:)
115
138
  DynamoDbFramework::Query.new(index_name: config[:index_name], table_name: config[:table].config[:table_name], partition_key: config[:partition_key][:field], partition_value: partition)
116
139
  end
@@ -41,7 +41,14 @@ module DynamoDbFramework
41
41
  self.instance_variable_set(:@range_key, { field: field, type: type })
42
42
  end
43
43
 
44
- def create(store: DynamoDbFramework.default_store, read_capacity: 25, write_capacity: 25)
44
+ def create(store: DynamoDbFramework.default_store, read_capacity: 25, write_capacity: 25, indexes: [])
45
+
46
+ #make method idempotent
47
+ if exists?(store: store)
48
+ wait_until_active(store: store)
49
+ return
50
+ end
51
+
45
52
  unless self.instance_variable_defined?(:@partition_key)
46
53
  raise DynamoDbFramework::Table::InvalidConfigException.new('Partition key must be specified.')
47
54
  end
@@ -57,7 +64,26 @@ module DynamoDbFramework
57
64
  builder.add({ name: range_key[:field], type: range_key[:type], key: :range })
58
65
  end
59
66
 
60
- DynamoDbFramework::TableManager.new(store).create_table({ name: full_table_name, attributes: builder.attributes, read_capacity: read_capacity, write_capacity: write_capacity })
67
+ global_indexes = nil
68
+ if indexes != nil && indexes.length > 0
69
+ global_indexes = []
70
+ indexes.each do |i|
71
+ global_indexes << i.create(store: store, submit: false, read_capacity: read_capacity, write_capacity: write_capacity)
72
+ index_partition_key = i.instance_variable_get(:@partition_key)
73
+ unless builder.contains(name: index_partition_key[:field])
74
+ builder.add({ name: index_partition_key[:field], type: index_partition_key[:type] })
75
+ end
76
+ if i.instance_variable_defined?(:@range_key)
77
+ index_range_key = i.instance_variable_get(:@range_key)
78
+ unless builder.contains(name: index_range_key[:field])
79
+ builder.add({ name: index_range_key[:field], type: index_range_key[:type] })
80
+ end
81
+ end
82
+
83
+ end
84
+ end
85
+
86
+ DynamoDbFramework::TableManager.new(store).create_table({ name: full_table_name, attributes: builder.attributes, read_capacity: read_capacity, write_capacity: write_capacity, global_indexes: global_indexes })
61
87
  end
62
88
 
63
89
  def update(store: DynamoDbFramework.default_store, read_capacity:, write_capacity:)
@@ -65,6 +91,9 @@ module DynamoDbFramework
65
91
  end
66
92
 
67
93
  def drop(store: DynamoDbFramework.default_store)
94
+ unless exists?(store: store)
95
+ return
96
+ end
68
97
  DynamoDbFramework::TableManager.new(store).drop(full_table_name)
69
98
  end
70
99
 
@@ -72,6 +101,18 @@ module DynamoDbFramework
72
101
  DynamoDbFramework::TableManager.new(store).exists?(full_table_name)
73
102
  end
74
103
 
104
+ def wait_until_active(store: DynamoDbFramework.default_store)
105
+ DynamoDbFramework::TableManager.new(store).wait_until_active(full_table_name)
106
+ end
107
+
108
+ def get_status(store: DynamoDbFramework.default_store)
109
+ DynamoDbFramework::TableManager.new(store).get_status(full_table_name)
110
+ end
111
+
112
+ def active?(store: DynamoDbFramework.default_store)
113
+ DynamoDbFramework::TableManager.new(store).get_status(full_table_name) == 'ACTIVE'
114
+ end
115
+
75
116
  def query(partition:)
76
117
  DynamoDbFramework::Query.new(table_name: config[:table_name], partition_key: config[:partition_key][:field], partition_value: partition)
77
118
  end
@@ -66,7 +66,7 @@ module DynamoDbFramework
66
66
 
67
67
  end
68
68
 
69
- def add_index(table_name, attributes, global_index)
69
+ def add_index(table_name, attributes, global_index, billing_mode = 'PROVISIONED')
70
70
 
71
71
  attribute_definitions = []
72
72
 
@@ -79,7 +79,8 @@ module DynamoDbFramework
79
79
  :attribute_definitions => attribute_definitions,
80
80
  :global_secondary_index_updates => [
81
81
  :create => global_index
82
- ]
82
+ ],
83
+ :billing_mode => billing_mode
83
84
  }
84
85
 
85
86
  dynamodb.client.update_table(table)
@@ -115,7 +116,38 @@ module DynamoDbFramework
115
116
  DynamoDbFramework.logger.info "[#{self.class}] -Table: [#{table_name}] updated."
116
117
  end
117
118
 
119
+ def update_ttl_attribute(table_name, enabled, attribute_name)
120
+ table = {
121
+ :table_name => table_name,
122
+ :time_to_live_specification => {
123
+ :enabled => enabled,
124
+ :attribute_name => attribute_name
125
+ }
126
+ }
127
+
128
+ DynamoDbFramework.logger.info "[#{self.class}] -Updating TTL Attribute: #{attribute_name}."
129
+ dynamodb.client.update_time_to_live(table)
130
+
131
+ # wait for table to be updated
132
+ DynamoDbFramework.logger.info "[#{self.class}] -Waiting for table: [#{table_name}] to be updated."
133
+ wait_until_ttl_changed(table_name)
134
+
135
+ DynamoDbFramework.logger.info "[#{self.class}] -Table: [#{table_name}] updated."
136
+ end
137
+
138
+ def get_ttl_status(table_name)
139
+ table = {
140
+ :table_name => table_name
141
+ }
142
+
143
+ dynamodb.client.describe_time_to_live(table)['time_to_live_description']
144
+ end
145
+
118
146
  def drop_index(table_name, index_name)
147
+ unless has_index?(table_name, index_name)
148
+ return
149
+ end
150
+
119
151
  table = {
120
152
  :table_name => table_name,
121
153
  :global_secondary_index_updates => [
@@ -130,6 +162,7 @@ module DynamoDbFramework
130
162
  # wait for table to be updated
131
163
  DynamoDbFramework.logger.info "[#{self.class}] -Deleting global index: #{index_name}."
132
164
  wait_until_index_dropped(table_name, index_name)
165
+
133
166
  DynamoDbFramework.logger.info "[#{self.class}] -Index: [#{index_name}] dropped."
134
167
  end
135
168
 
@@ -154,9 +187,13 @@ module DynamoDbFramework
154
187
  return nil
155
188
  end
156
189
 
190
+ def wait_timeout
191
+ Time.now + 900 #15 minutes
192
+ end
193
+
157
194
  def wait_until_active(table_name)
158
195
 
159
- end_time = Time.now + 300
196
+ end_time = wait_timeout
160
197
  while Time.now < end_time do
161
198
 
162
199
  status = get_status(table_name)
@@ -168,13 +205,31 @@ module DynamoDbFramework
168
205
  sleep(5)
169
206
  end
170
207
 
171
- raise "Timeout occured while waiting for table: #{table_name}, to become active."
208
+ raise "Timeout occurred while waiting for table: #{table_name}, to become active."
209
+
210
+ end
211
+
212
+ def wait_until_dropped(table_name)
213
+
214
+ end_time = wait_timeout
215
+ while Time.now < end_time do
216
+
217
+ status = get_status(table_name)
218
+
219
+ if status == nil
220
+ return
221
+ end
222
+
223
+ sleep(5)
224
+ end
225
+
226
+ raise "Timeout occurred while waiting for table: #{table_name}, to be dropped."
172
227
 
173
228
  end
174
229
 
175
230
  def wait_until_index_active(table_name, index_name)
176
231
 
177
- end_time = Time.now + 300
232
+ end_time = wait_timeout
178
233
  while Time.now < end_time do
179
234
 
180
235
  status = get_index_status(table_name, index_name)
@@ -186,13 +241,13 @@ module DynamoDbFramework
186
241
  sleep(5)
187
242
  end
188
243
 
189
- raise "Timeout occured while waiting for table: #{table_name}, index: #{index_name}, to become active."
244
+ raise "Timeout occurred while waiting for table: #{table_name}, index: #{index_name}, to become active."
190
245
 
191
246
  end
192
247
 
193
248
  def wait_until_index_dropped(table_name, index_name)
194
249
 
195
- end_time = Time.now + 300
250
+ end_time = wait_timeout
196
251
  while Time.now < end_time do
197
252
 
198
253
  status = get_index_status(table_name, index_name)
@@ -204,11 +259,29 @@ module DynamoDbFramework
204
259
  sleep(5)
205
260
  end
206
261
 
207
- raise "Timeout occured while waiting for table: #{table_name}, index: #{index_name}, to be dropped."
262
+ raise "Timeout occurred while waiting for table: #{table_name}, index: #{index_name}, to be dropped."
263
+
264
+ end
265
+
266
+ def wait_until_ttl_changed(table_name)
267
+
268
+ end_time = wait_timeout
269
+ while Time.now < end_time do
270
+
271
+ status = get_ttl_status(table_name)['time_to_live_status']
272
+
273
+ if status == 'ENABLED' || status == 'DISABLED'
274
+ return
275
+ end
276
+
277
+ sleep(5)
278
+ end
279
+
280
+ raise "Timeout occurred while waiting for table: #{table_name}, to update TTL status."
208
281
 
209
282
  end
210
283
 
211
- def create(table_name, attributes, partition_key, range_key = nil, read_capacity = 20, write_capacity = 10, global_indexes = nil)
284
+ def create(table_name, attributes, partition_key, range_key = nil, read_capacity = 20, write_capacity = 10, global_indexes = nil, billing_mode = 'PROVISIONED')
212
285
 
213
286
  if exists?(table_name)
214
287
  return
@@ -230,11 +303,17 @@ module DynamoDbFramework
230
303
  :table_name => table_name,
231
304
  :attribute_definitions => attribute_definitions,
232
305
  :key_schema => key_schema,
306
+ :billing_mode => billing_mode
307
+ }
308
+
309
+ unless billing_mode == 'PAY_PER_REQUEST'
310
+ table = table.merge(
233
311
  :provisioned_throughput => {
234
- :read_capacity_units => read_capacity,
235
- :write_capacity_units => write_capacity
312
+ :read_capacity_units => read_capacity,
313
+ :write_capacity_units => write_capacity
236
314
  }
237
- }
315
+ )
316
+ end
238
317
 
239
318
  if global_indexes != nil
240
319
  table[:global_secondary_indexes] = global_indexes
@@ -289,17 +368,27 @@ module DynamoDbFramework
289
368
  :table_name => table_name,
290
369
  :attribute_definitions => attribute_definitions,
291
370
  :key_schema => key_schema,
371
+ :billing_mode => options[:billing_mode] || 'PROVISIONED'
372
+ }
373
+
374
+ unless options[:billing_mode] == 'PAY_PER_REQUEST'
375
+ table = table.merge(
292
376
  :provisioned_throughput => {
293
- :read_capacity_units => options[:read_capacity],
294
- :write_capacity_units => options[:write_capacity]
377
+ :read_capacity_units => options[:read_capacity],
378
+ :write_capacity_units => options[:write_capacity]
295
379
  }
296
- }
380
+ )
381
+ end
297
382
 
298
383
  if options[:global_indexes] != nil
299
384
  table[:global_secondary_indexes] = options[:global_indexes]
300
385
  end
301
386
 
302
- dynamodb.client.create_table(table)
387
+ begin
388
+ dynamodb.client.create_table(table)
389
+ rescue Aws::DynamoDB::Errors::ResourceInUseException => e
390
+ DynamoDbFramework.logger.warn "[#{self.class}] - Table #{table_name} already exists!"
391
+ end
303
392
 
304
393
  # wait for table to be created
305
394
  DynamoDbFramework.logger.info "[#{self.class}] - Waiting for table: [#{table_name}] to be created."
@@ -307,7 +396,7 @@ module DynamoDbFramework
307
396
  DynamoDbFramework.logger.info "[#{self.class}] - Table: [#{table_name}] created."
308
397
  end
309
398
 
310
- def create_global_index(name, partition_key, range_key = nil, read_capacity = 20, write_capacity = 10)
399
+ def create_global_index(name, partition_key, range_key = nil, read_capacity = 20, write_capacity = 10, billing_mode = 'PROVISIONED')
311
400
 
312
401
  key_schema = []
313
402
 
@@ -321,13 +410,18 @@ module DynamoDbFramework
321
410
  :key_schema => key_schema,
322
411
  :projection => {
323
412
  :projection_type => :ALL
324
- },
325
- :provisioned_throughput => {
326
- :read_capacity_units => read_capacity,
327
- :write_capacity_units => write_capacity,
328
413
  }
329
414
  }
330
415
 
416
+ if billing_mode == 'PROVISIONED'
417
+ index = index.merge(
418
+ :provisioned_throughput => {
419
+ :read_capacity_units => read_capacity,
420
+ :write_capacity_units => write_capacity,
421
+ }
422
+ )
423
+ end
424
+
331
425
  return index
332
426
  end
333
427
 
@@ -1,3 +1,3 @@
1
1
  module DynamoDbFramework
2
- VERSION = '1.5.2'
2
+ VERSION = '1.9.0'
3
3
  end
@@ -117,6 +117,56 @@ RSpec.describe DynamoDbFramework::TableManager do
117
117
 
118
118
  end
119
119
 
120
+ it 'can update the TTL attribute' do
121
+
122
+ exists = subject.exists?('update_ttl_test')
123
+
124
+ if exists
125
+ subject.drop('update_ttl_test')
126
+ end
127
+
128
+ builder = DynamoDbFramework::AttributesBuilder.new
129
+ builder.add(:ttl_date, :N)
130
+
131
+ subject.create('update_ttl_test', builder.attributes, :ttl_date)
132
+
133
+ subject.update_ttl_attribute('update_ttl_test', true, 'ttl_date')
134
+
135
+ expect(subject.get_ttl_status('update_ttl_test')['time_to_live_status']).to eq('ENABLED')
136
+
137
+ subject.drop('update_ttl_test')
138
+
139
+ end
140
+
141
+ it 'can disable the TTL attribute' do
142
+
143
+ exists = subject.exists?('update_ttl_test')
144
+
145
+ if exists
146
+ subject.drop('update_ttl_test')
147
+ end
148
+
149
+ builder = DynamoDbFramework::AttributesBuilder.new
150
+ builder.add(:ttl_date, :N)
151
+
152
+ subject.create('update_ttl_test', builder.attributes, :ttl_date)
153
+
154
+ subject.update_ttl_attribute('update_ttl_test', true, 'ttl_date')
155
+
156
+ subject.update_ttl_attribute('update_ttl_test', false, 'ttl_date')
157
+
158
+ expect(subject.get_ttl_status('update_ttl_test')['time_to_live_status']).to eq('DISABLED')
159
+
160
+ subject.drop('update_ttl_test')
161
+
162
+ end
163
+
164
+ it 'handles timeouts when dynamodb fails to respond' do
165
+ allow(subject).to receive('wait_timeout').and_return(Time.now)
166
+
167
+ expect{subject.wait_until_ttl_changed('update_ttl_test')}.to raise_error("Timeout occurred while waiting for table: update_ttl_test, to update TTL status.")
168
+ end
169
+
120
170
  it 'can drop an existing global secondary index' do
121
171
 
122
172
  exists = subject.exists?('drop_index_test')
@@ -22,6 +22,22 @@ RSpec.describe DynamoDbFramework::Table do
22
22
  end
23
23
  end
24
24
 
25
+ context 'with an index specified' do
26
+ let(:table_name) { ExampleTable.config[:table_name] }
27
+ let(:index_name) { ExampleIndex.config[:index_name] }
28
+ before do
29
+ table_manager.drop(table_name)
30
+ table_manager.drop_index(table_name, index_name)
31
+ end
32
+ it 'should create the table and index' do
33
+ expect(table_manager.exists?(table_name)).to be false
34
+ expect(ExampleIndex.exists?(store: store)).to be false
35
+ ExampleTable.create(store: store, indexes: [ExampleIndex])
36
+ expect(table_manager.exists?(table_name)).to be true
37
+ expect(ExampleIndex.exists?(store: store)).to be true
38
+ end
39
+ end
40
+
25
41
  context 'without a range key' do
26
42
  let(:table_name) { ExampleTableWithoutRangeKey.config[:table_name] }
27
43
  before do
@@ -33,6 +49,19 @@ RSpec.describe DynamoDbFramework::Table do
33
49
  expect(table_manager.exists?(table_name)).to be true
34
50
  end
35
51
  end
52
+
53
+ context 'when already exists' do
54
+ let(:table_name) { ExampleTableWithoutRangeKey.config[:table_name] }
55
+ before do
56
+ table_manager.drop(table_name)
57
+ ExampleTableWithoutRangeKey.create(store: store)
58
+ end
59
+ it 'should return without error' do
60
+ expect(table_manager.exists?(table_name)).to be true
61
+ expect { ExampleTableWithoutRangeKey.create(store: store) }.not_to raise_error
62
+ expect(table_manager.exists?(table_name)).to be true
63
+ end
64
+ end
36
65
  end
37
66
  context 'when an invalid table class calls the create method' do
38
67
  context 'without a table_name specified' do
@@ -111,6 +140,29 @@ RSpec.describe DynamoDbFramework::Table do
111
140
  end
112
141
  end
113
142
 
143
+ describe '#wait_until_active' do
144
+ context 'when a table exists' do
145
+ let(:table_name) { ExampleTable.config[:table_name] }
146
+ before do
147
+ table_manager.drop(table_name)
148
+ ExampleTable.create(store: store)
149
+ end
150
+ it 'should not raise timeout error' do
151
+ expect { ExampleTable.wait_until_active(store: store) }.not_to raise_error
152
+ end
153
+ end
154
+ context 'when a table does NOT exist' do
155
+ let(:table_name) { ExampleTable.config[:table_name] }
156
+ before do
157
+ table_manager.drop(table_name)
158
+ allow_any_instance_of(DynamoDbFramework::TableManager).to receive(:wait_timeout).and_return(Time.now)
159
+ end
160
+ it 'should raise timeout error' do
161
+ expect { ExampleTable.wait_until_active(store: store) }.to raise_error
162
+ end
163
+ end
164
+ end
165
+
114
166
  describe '#query' do
115
167
 
116
168
  let(:repository) do
@@ -30,7 +30,7 @@ class ExampleIndexWithoutPartitionKey
30
30
  extend DynamoDbFramework::Index
31
31
 
32
32
  table ExampleTable
33
- index_name 'example_index'
33
+ index_name 'example_index.without.partition'
34
34
  range_key :id, :S
35
35
 
36
36
  end
@@ -38,7 +38,7 @@ end
38
38
  class ExampleIndexWithoutRangeKey
39
39
  extend DynamoDbFramework::Index
40
40
 
41
- index_name 'example_index'
41
+ index_name 'example_index.without.range'
42
42
  table ExampleTable
43
43
  partition_key :name, :S
44
44
 
@@ -27,7 +27,7 @@ end
27
27
  class ExampleTableWithoutPartitionKey
28
28
  extend DynamoDbFramework::Table
29
29
 
30
- table_name 'example'
30
+ table_name 'example.without.partition'
31
31
  range_key :timestamp, :N
32
32
 
33
33
  end
@@ -35,7 +35,7 @@ end
35
35
  class ExampleTableWithoutRangeKey
36
36
  extend DynamoDbFramework::Table
37
37
 
38
- table_name 'example'
38
+ table_name 'example.without.range'
39
39
  partition_key :id, :S
40
40
 
41
41
  end
@@ -1,3 +1,8 @@
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_filter '/spec/'
4
+ end
5
+
1
6
  require "rubygems"
2
7
  require "bundler"
3
8
  require 'aws-sdk-core'
@@ -9,12 +14,7 @@ require_relative '../spec/example_table'
9
14
  require_relative '../spec/example_index'
10
15
  require 'pry'
11
16
 
12
- require 'simplecov'
13
- SimpleCov.start do
14
- add_filter '/spec/'
15
- end
16
-
17
- DYNAMODB_STORE_ENDPOINT = 'http://dynamodb:8000'
17
+ DYNAMODB_STORE_ENDPOINT = ENV.fetch('DYNAMODB_ENDPOINT', 'http://localhost:8000')
18
18
 
19
19
  Aws.config[:credentials] = Aws::Credentials.new('test_key', 'test_secret')
20
20
  Aws.config[:region] = 'eu-west-1'
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamodb_framework
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - vaughanbrittonsage
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-18 00:00:00.000000000 Z
11
+ date: 2020-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.11'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.11'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.5'
75
+ version: '0.6'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.5'
82
+ version: '0.6'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: json
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -98,20 +98,20 @@ dependencies:
98
98
  name: aws-sdk-core
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: '2.10'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: '2.10'
111
111
  description: A lightweight framework to provide managers for working with aws dynamodb
112
112
  (incuding local version).
113
113
  email:
114
- - vaughanbritton@gmail.com
114
+ - vaughan.britton@sage.com
115
115
  executables: []
116
116
  extensions: []
117
117
  extra_rdoc_files: []
@@ -132,16 +132,16 @@ files:
132
132
  - lib/dynamodb_framework/dynamodb_table_manager.rb
133
133
  - lib/dynamodb_framework/hash_helper.rb
134
134
  - lib/dynamodb_framework/version.rb
135
- - spec/dynamodb_index_spec.rb
136
- - spec/dynamodb_migration_manager_spec.rb
137
- - spec/dynamodb_namespace_migration_manager_spec.rb
138
- - spec/dynamodb_query_spec.rb
139
- - spec/dynamodb_repository_spec.rb
140
- - spec/dynamodb_table_manager_spec.rb
141
- - spec/dynamodb_table_spec.rb
135
+ - spec/dynamodb_framework/dynamodb_index_spec.rb
136
+ - spec/dynamodb_framework/dynamodb_migration_manager_spec.rb
137
+ - spec/dynamodb_framework/dynamodb_namespace_migration_manager_spec.rb
138
+ - spec/dynamodb_framework/dynamodb_query_spec.rb
139
+ - spec/dynamodb_framework/dynamodb_repository_spec.rb
140
+ - spec/dynamodb_framework/dynamodb_table_manager_spec.rb
141
+ - spec/dynamodb_framework/dynamodb_table_spec.rb
142
+ - spec/dynamodb_framework/hash_helper_spec.rb
142
143
  - spec/example_index.rb
143
144
  - spec/example_table.rb
144
- - spec/hash_helper_spec.rb
145
145
  - spec/spec_helper.rb
146
146
  - spec/test_item.rb
147
147
  - spec/test_migration_script1.rb
@@ -165,8 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  requirements: []
168
- rubyforge_project:
169
- rubygems_version: 2.5.1
168
+ rubygems_version: 3.0.8
170
169
  signing_key:
171
170
  specification_version: 4
172
171
  summary: A lightweight framework to provide managers for working with aws dynamodb