dynamodb_framework 1.5.0 → 1.5.1
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 +4 -4
- data/lib/dynamodb_framework.rb +9 -0
- data/lib/dynamodb_framework/dynamodb_index.rb +4 -4
- data/lib/dynamodb_framework/dynamodb_query.rb +1 -1
- data/lib/dynamodb_framework/dynamodb_table.rb +8 -8
- data/lib/dynamodb_framework/version.rb +1 -1
- data/spec/dynamodb_index_spec.rb +62 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb491b0866bc6f800f212a1ef1de4c686970933e
|
4
|
+
data.tar.gz: 0437cd1aa38f066e0277e69e501aa3adffe0ce74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f0dac4765ff8aaf699cc0af798985c622fbb9aa9ebe979a2818af17248e93ef6a070b7ec5e76d120dce5cb6f7e674da4f5afb4a2fab9cfa92344525d16f7815
|
7
|
+
data.tar.gz: 7838f1d5fb12b15cadd29a93ce358595d894248b97d741e7b355a7747aab86e5250e6aa1e3ed41a791bdde7302deb5c6de444c5fe9f3ee1920dbeb3332c98c1b
|
data/lib/dynamodb_framework.rb
CHANGED
@@ -29,4 +29,13 @@ module DynamoDbFramework
|
|
29
29
|
def self.namespace_delimiter
|
30
30
|
@namespace_delimiter ||= '.'
|
31
31
|
end
|
32
|
+
def self.default_store=(value)
|
33
|
+
unless value.is_a?(DynamoDbFramework::Store)
|
34
|
+
raise 'Invalid default store specified. Store must be of type: [DynamoDbFramework::Store]'
|
35
|
+
end
|
36
|
+
@default_store = value
|
37
|
+
end
|
38
|
+
def self.default_store
|
39
|
+
@default_store ||= DynamoDbFramework::Store.new
|
40
|
+
end
|
32
41
|
end
|
@@ -46,7 +46,7 @@ module DynamoDbFramework
|
|
46
46
|
self.instance_variable_set(:@range_key, { field: field, type: type })
|
47
47
|
end
|
48
48
|
|
49
|
-
def create(store
|
49
|
+
def create(store: DynamoDbFramework.default_store, read_capacity: 25, write_capacity: 25)
|
50
50
|
unless self.instance_variable_defined?(:@table)
|
51
51
|
raise DynamoDbFramework::Index::InvalidConfigException.new('Table must be specified.')
|
52
52
|
end
|
@@ -83,7 +83,7 @@ module DynamoDbFramework
|
|
83
83
|
table_manager.add_index(table_name, builder.attributes, index)
|
84
84
|
end
|
85
85
|
|
86
|
-
def update(store
|
86
|
+
def update(store: DynamoDbFramework.default_store, read_capacity:, write_capacity:)
|
87
87
|
unless self.instance_variable_defined?(:@table)
|
88
88
|
raise DynamoDbFramework::Index::InvalidConfigException.new('Table must be specified.')
|
89
89
|
end
|
@@ -92,7 +92,7 @@ module DynamoDbFramework
|
|
92
92
|
DynamoDbFramework::TableManager.new(store).update_index_throughput(table.config[:table_name], full_index_name, read_capacity, write_capacity)
|
93
93
|
end
|
94
94
|
|
95
|
-
def drop(store:)
|
95
|
+
def drop(store: DynamoDbFramework.default_store)
|
96
96
|
unless self.instance_variable_defined?(:@table)
|
97
97
|
raise DynamoDbFramework::Index::InvalidConfigException.new('Table must be specified.')
|
98
98
|
end
|
@@ -102,7 +102,7 @@ module DynamoDbFramework
|
|
102
102
|
DynamoDbFramework::TableManager.new(store).drop_index(table_name, full_index_name)
|
103
103
|
end
|
104
104
|
|
105
|
-
def exists?(store:)
|
105
|
+
def exists?(store: DynamoDbFramework.default_store)
|
106
106
|
unless self.instance_variable_defined?(:@table)
|
107
107
|
raise DynamoDbFramework::Index::InvalidConfigException.new('Table must be specified.')
|
108
108
|
end
|
@@ -80,7 +80,7 @@ module DynamoDbFramework
|
|
80
80
|
self
|
81
81
|
end
|
82
82
|
|
83
|
-
def execute(store
|
83
|
+
def execute(store: DynamoDbFramework.default_store, limit: nil, count: false)
|
84
84
|
build
|
85
85
|
repository = DynamoDbFramework::Repository.new(store)
|
86
86
|
repository.table_name = @table_name
|
@@ -41,7 +41,7 @@ module DynamoDbFramework
|
|
41
41
|
self.instance_variable_set(:@range_key, { field: field, type: type })
|
42
42
|
end
|
43
43
|
|
44
|
-
def create(store
|
44
|
+
def create(store: DynamoDbFramework.default_store, read_capacity: 25, write_capacity: 25)
|
45
45
|
unless self.instance_variable_defined?(:@partition_key)
|
46
46
|
raise DynamoDbFramework::Table::InvalidConfigException.new('Partition key must be specified.')
|
47
47
|
end
|
@@ -60,15 +60,15 @@ module DynamoDbFramework
|
|
60
60
|
DynamoDbFramework::TableManager.new(store).create_table({ name: full_table_name, attributes: builder.attributes, read_capacity: read_capacity, write_capacity: write_capacity })
|
61
61
|
end
|
62
62
|
|
63
|
-
def update(store
|
63
|
+
def update(store: DynamoDbFramework.default_store, read_capacity:, write_capacity:)
|
64
64
|
DynamoDbFramework::TableManager.new(store).update_throughput(full_table_name, read_capacity, write_capacity)
|
65
65
|
end
|
66
66
|
|
67
|
-
def drop(store:)
|
67
|
+
def drop(store: DynamoDbFramework.default_store)
|
68
68
|
DynamoDbFramework::TableManager.new(store).drop(full_table_name)
|
69
69
|
end
|
70
70
|
|
71
|
-
def exists?(store:)
|
71
|
+
def exists?(store: DynamoDbFramework.default_store)
|
72
72
|
DynamoDbFramework::TableManager.new(store).exists?(full_table_name)
|
73
73
|
end
|
74
74
|
|
@@ -76,19 +76,19 @@ module DynamoDbFramework
|
|
76
76
|
DynamoDbFramework::Query.new(table_name: config[:table_name], partition_key: config[:partition_key][:field], partition_value: partition)
|
77
77
|
end
|
78
78
|
|
79
|
-
def all(store:)
|
79
|
+
def all(store: DynamoDbFramework.default_store)
|
80
80
|
repository = DynamoDbFramework::Repository.new(store)
|
81
81
|
repository.table_name = config[:table_name]
|
82
82
|
repository.all
|
83
83
|
end
|
84
84
|
|
85
|
-
def put_item(store
|
85
|
+
def put_item(store: DynamoDbFramework.default_store, item:)
|
86
86
|
repository = DynamoDbFramework::Repository.new(store)
|
87
87
|
repository.table_name = config[:table_name]
|
88
88
|
repository.put(item)
|
89
89
|
end
|
90
90
|
|
91
|
-
def get_item(store
|
91
|
+
def get_item(store: DynamoDbFramework.default_store, partition:, range: nil)
|
92
92
|
repository = DynamoDbFramework::Repository.new(store)
|
93
93
|
repository.table_name = config[:table_name]
|
94
94
|
|
@@ -99,7 +99,7 @@ module DynamoDbFramework
|
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
|
-
def delete_item(store
|
102
|
+
def delete_item(store: DynamoDbFramework.default_store, partition:, range: nil)
|
103
103
|
repository = DynamoDbFramework::Repository.new(store)
|
104
104
|
repository.table_name = config[:table_name]
|
105
105
|
|
data/spec/dynamodb_index_spec.rb
CHANGED
@@ -43,6 +43,21 @@ RSpec.describe DynamoDbFramework::Index do
|
|
43
43
|
expect(table_manager.has_index?(table_name, index_name)).to be true
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
context 'when no store is specified' do
|
48
|
+
let(:index_name) { ExampleIndex.config[:index_name] }
|
49
|
+
before do
|
50
|
+
DynamoDbFramework.default_store = store
|
51
|
+
if table_manager.has_index?(table_name, index_name)
|
52
|
+
table_manager.drop_index(table_name, index_name)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
it 'should create the index using the default store' do
|
56
|
+
expect(table_manager.has_index?(table_name, index_name)).to be false
|
57
|
+
ExampleIndex.create
|
58
|
+
expect(table_manager.has_index?(table_name, index_name)).to be true
|
59
|
+
end
|
60
|
+
end
|
46
61
|
end
|
47
62
|
context 'when an invalid index class calls the create method' do
|
48
63
|
context 'without a index_name specified' do
|
@@ -75,6 +90,15 @@ RSpec.describe DynamoDbFramework::Index do
|
|
75
90
|
it 'should update the index' do
|
76
91
|
ExampleIndex.update(store: store, read_capacity: 50, write_capacity: 50)
|
77
92
|
end
|
93
|
+
context 'when no store is specified' do
|
94
|
+
let(:index_name) { ExampleIndex.config[:index_name] }
|
95
|
+
before do
|
96
|
+
DynamoDbFramework.default_store = store
|
97
|
+
end
|
98
|
+
it 'should update the index using the default store' do
|
99
|
+
ExampleIndex.update(read_capacity: 50, write_capacity: 50)
|
100
|
+
end
|
101
|
+
end
|
78
102
|
end
|
79
103
|
context 'when an invalid index class calls the update method' do
|
80
104
|
context 'without an index_name specified' do
|
@@ -103,6 +127,15 @@ RSpec.describe DynamoDbFramework::Index do
|
|
103
127
|
ExampleIndex.drop(store: store)
|
104
128
|
expect(table_manager.has_index?(table_name, index_name)).to be false
|
105
129
|
end
|
130
|
+
context 'when no store is specified' do
|
131
|
+
before do
|
132
|
+
DynamoDbFramework.default_store = store
|
133
|
+
end
|
134
|
+
it 'should drop the index using the default store' do
|
135
|
+
ExampleIndex.drop
|
136
|
+
expect(table_manager.has_index?(table_name, index_name)).to be false
|
137
|
+
end
|
138
|
+
end
|
106
139
|
end
|
107
140
|
context 'when an invalid index class calls the drop method' do
|
108
141
|
context 'without an index_name specified' do
|
@@ -130,6 +163,14 @@ RSpec.describe DynamoDbFramework::Index do
|
|
130
163
|
it 'should return true' do
|
131
164
|
expect(ExampleIndex.exists?(store: store)).to be true
|
132
165
|
end
|
166
|
+
context 'when no store is specified' do
|
167
|
+
before do
|
168
|
+
DynamoDbFramework.default_store = store
|
169
|
+
end
|
170
|
+
it 'should return true using the default store' do
|
171
|
+
expect(ExampleIndex.exists?).to be true
|
172
|
+
end
|
173
|
+
end
|
133
174
|
end
|
134
175
|
context 'when the index does NOT exist' do
|
135
176
|
let(:index_name) { ExampleIndex.config[:index_name] }
|
@@ -141,6 +182,14 @@ RSpec.describe DynamoDbFramework::Index do
|
|
141
182
|
it 'should return false' do
|
142
183
|
expect(ExampleIndex.exists?(store: store)).to be false
|
143
184
|
end
|
185
|
+
context 'when no store is specified' do
|
186
|
+
before do
|
187
|
+
DynamoDbFramework.default_store = store
|
188
|
+
end
|
189
|
+
it 'should return false using the default store' do
|
190
|
+
expect(ExampleIndex.exists?).to be false
|
191
|
+
end
|
192
|
+
end
|
144
193
|
end
|
145
194
|
end
|
146
195
|
|
@@ -164,9 +213,10 @@ RSpec.describe DynamoDbFramework::Index do
|
|
164
213
|
end
|
165
214
|
|
166
215
|
before do
|
216
|
+
DynamoDbFramework::default_store = store
|
167
217
|
table_manager.drop(table_name)
|
168
|
-
ExampleTable.create
|
169
|
-
ExampleIndex.create
|
218
|
+
ExampleTable.create
|
219
|
+
ExampleIndex.create
|
170
220
|
|
171
221
|
create_query_item('name 1', 1)
|
172
222
|
create_query_item('name 1', 2)
|
@@ -187,6 +237,16 @@ RSpec.describe DynamoDbFramework::Index do
|
|
187
237
|
.execute(store: store)
|
188
238
|
expect(results.length).to eq 4
|
189
239
|
end
|
240
|
+
context 'when no store is specified' do
|
241
|
+
it 'should return the expected items' do
|
242
|
+
results = ExampleIndex.query(partition: 'name 1')
|
243
|
+
.number.gt_eq(1)
|
244
|
+
.and
|
245
|
+
.number.lt_eq(5)
|
246
|
+
.execute
|
247
|
+
expect(results.length).to eq 4
|
248
|
+
end
|
249
|
+
end
|
190
250
|
context 'when limit is specified' do
|
191
251
|
it 'should return the expected items' do
|
192
252
|
results = ExampleIndex.query(partition: 'name 1')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynamodb_framework
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vaughanbrittonsage
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|