dynamodb_framework 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2e9e95252df3ef6139a53607ef7c4f081cca9361
4
- data.tar.gz: 728101534d9dc54b3af16ce344932bfd9a16c6d2
3
+ metadata.gz: fb1b773af48a0777219738839d369a94effe8333
4
+ data.tar.gz: 30829e0621be4deef2588880d4a754296c0043c3
5
5
  SHA512:
6
- metadata.gz: d3d7cc9b5db6f18ded157acab9c8b136170a710ebcdd0288d06f02284bf5ba097940e82a6ad6d6a27059fc297220842d57ce9dfd2e08a5d37edb22ebdbec2d1e
7
- data.tar.gz: ab40d678b2c080fa83cd8796837e99e86c9da5a94fb13f2088e4f4de66f368927670f7e00bc5d1bbdbb8cf7f10f8288bec621b2c7f41a9c8a1d707a85c03b1c3
6
+ metadata.gz: 6dc92faa4bafbe9d1fc4981c17aea0996df81e5e42532a617a07d5868247c09773d68316ab888ff69b24be0242164a5516dcde48adbdb935dbb61456e0106e72
7
+ data.tar.gz: 0d281cb9f589e24a86491d27f3a861708837e17f1e44dfb428d746323ab6144612d9f4e108e39f938f9fbc67c1646d837f273340354e4603f0affcd92ceaeb81
data/.idea/workspace.xml CHANGED
@@ -2,8 +2,7 @@
2
2
  <project version="4">
3
3
  <component name="ChangeListManager">
4
4
  <list default="true" id="e6e52ba6-fb1e-45c4-b31f-2a2931ecfa44" name="Default" comment="">
5
- <change type="MODIFICATION" beforePath="$PROJECT_DIR$/dynamodb_framework.gemspec" afterPath="$PROJECT_DIR$/dynamodb_framework.gemspec" />
6
- <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/dynamodb_framework.iml" afterPath="$PROJECT_DIR$/.idea/dynamodb_framework.iml" />
5
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/dynamodb_framework/version.rb" afterPath="$PROJECT_DIR$/lib/dynamodb_framework/version.rb" />
7
6
  </list>
8
7
  <ignored path="dynamodb_framework.iws" />
9
8
  <ignored path=".idea/workspace.xml" />
@@ -24,101 +23,46 @@
24
23
  </component>
25
24
  <component name="FileEditorManager">
26
25
  <leaf>
27
- <file leaf-file-name="Gemfile" pinned="false" current-in-tab="false">
28
- <entry file="file://$PROJECT_DIR$/Gemfile">
26
+ <file leaf-file-name="dynamodb_repository.rb" pinned="false" current-in-tab="false">
27
+ <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_repository.rb">
29
28
  <provider selected="true" editor-type-id="text-editor">
30
29
  <state vertical-scroll-proportion="0.0">
31
- <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
32
- <folding />
33
- </state>
34
- </provider>
35
- </entry>
36
- </file>
37
- <file leaf-file-name="dynamodb_framework.gemspec" pinned="false" current-in-tab="true">
38
- <entry file="file://$PROJECT_DIR$/dynamodb_framework.gemspec">
39
- <provider selected="true" editor-type-id="text-editor">
40
- <state vertical-scroll-proportion="0.1558753">
41
- <caret line="13" column="80" selection-start-line="13" selection-start-column="80" selection-end-line="13" selection-end-column="80" />
42
- <folding />
43
- </state>
44
- </provider>
45
- </entry>
46
- </file>
47
- <file leaf-file-name="spec_helper.rb" pinned="false" current-in-tab="false">
48
- <entry file="file://$PROJECT_DIR$/spec/spec_helper.rb">
49
- <provider selected="true" editor-type-id="text-editor">
50
- <state vertical-scroll-proportion="0.0">
51
- <caret line="8" column="28" selection-start-line="8" selection-start-column="28" selection-end-line="8" selection-end-column="28" />
52
- <folding />
30
+ <caret line="119" column="186" selection-start-line="119" selection-start-column="186" selection-end-line="119" selection-end-column="186" />
31
+ <folding>
32
+ <element signature="e#530#888#0" expanded="false" />
33
+ <element signature="e#892#1149#0" expanded="false" />
34
+ <element signature="e#1153#2133#0" expanded="false" />
35
+ <element signature="e#2137#3853#0" expanded="false" />
36
+ </folding>
53
37
  </state>
54
38
  </provider>
55
39
  </entry>
56
40
  </file>
57
- <file leaf-file-name="test_item.rb" pinned="false" current-in-tab="false">
58
- <entry file="file://$PROJECT_DIR$/spec/test_item.rb">
59
- <provider selected="true" editor-type-id="text-editor">
60
- <state vertical-scroll-proportion="0.0">
61
- <caret line="5" column="3" selection-start-line="5" selection-start-column="3" selection-end-line="5" selection-end-column="3" />
62
- <folding />
63
- </state>
64
- </provider>
65
- </entry>
66
- </file>
67
- <file leaf-file-name="test_migration_script1.rb" pinned="false" current-in-tab="false">
68
- <entry file="file://$PROJECT_DIR$/spec/test_migration_script1.rb">
69
- <provider selected="true" editor-type-id="text-editor">
70
- <state vertical-scroll-proportion="0.0">
71
- <caret line="22" column="3" selection-start-line="22" selection-start-column="3" selection-end-line="22" selection-end-column="3" />
72
- <folding />
73
- </state>
74
- </provider>
75
- </entry>
76
- </file>
77
- <file leaf-file-name="test_migration_script2.rb" pinned="false" current-in-tab="false">
78
- <entry file="file://$PROJECT_DIR$/spec/test_migration_script2.rb">
79
- <provider selected="true" editor-type-id="text-editor">
80
- <state vertical-scroll-proportion="0.0">
81
- <caret line="22" column="3" selection-start-line="22" selection-start-column="3" selection-end-line="22" selection-end-column="3" />
82
- <folding />
83
- </state>
84
- </provider>
85
- </entry>
86
- </file>
87
- <file leaf-file-name="dynamodb_framework.rb" pinned="false" current-in-tab="false">
88
- <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework.rb">
89
- <provider selected="true" editor-type-id="text-editor">
90
- <state vertical-scroll-proportion="0.0">
91
- <caret line="6" column="53" selection-start-line="6" selection-start-column="53" selection-end-line="6" selection-end-column="53" />
92
- <folding />
93
- </state>
94
- </provider>
95
- </entry>
96
- </file>
97
- <file leaf-file-name="dynamodb_migration_manager_spec.rb" pinned="false" current-in-tab="false">
98
- <entry file="file://$PROJECT_DIR$/spec/dynamodb_migration_manager_spec.rb">
41
+ <file leaf-file-name="dynamodb_repository_spec.rb" pinned="false" current-in-tab="false">
42
+ <entry file="file://$PROJECT_DIR$/spec/dynamodb_repository_spec.rb">
99
43
  <provider selected="true" editor-type-id="text-editor">
100
44
  <state vertical-scroll-proportion="0.0">
101
- <caret line="1" column="0" selection-start-line="1" selection-start-column="0" selection-end-line="1" selection-end-column="0" />
45
+ <caret line="192" column="133" selection-start-line="192" selection-start-column="6" selection-end-line="192" selection-end-column="133" />
102
46
  <folding />
103
47
  </state>
104
48
  </provider>
105
49
  </entry>
106
50
  </file>
107
- <file leaf-file-name="dynamodb_repository_spec.rb" pinned="false" current-in-tab="false">
108
- <entry file="file://$PROJECT_DIR$/spec/dynamodb_repository_spec.rb">
51
+ <file leaf-file-name="README.md" pinned="false" current-in-tab="false">
52
+ <entry file="file://$PROJECT_DIR$/README.md">
109
53
  <provider selected="true" editor-type-id="text-editor">
110
- <state vertical-scroll-proportion="0.0">
111
- <caret line="0" column="9" selection-start-line="0" selection-start-column="9" selection-end-line="0" selection-end-column="9" />
54
+ <state vertical-scroll-proportion="-37.0">
55
+ <caret line="367" column="77" selection-start-line="367" selection-start-column="77" selection-end-line="367" selection-end-column="77" />
112
56
  <folding />
113
57
  </state>
114
58
  </provider>
115
59
  </entry>
116
60
  </file>
117
- <file leaf-file-name="dynamodb_table_manager_spec.rb" pinned="false" current-in-tab="false">
118
- <entry file="file://$PROJECT_DIR$/spec/dynamodb_table_manager_spec.rb">
61
+ <file leaf-file-name="version.rb" pinned="false" current-in-tab="true">
62
+ <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/version.rb">
119
63
  <provider selected="true" editor-type-id="text-editor">
120
- <state vertical-scroll-proportion="0.0">
121
- <caret line="0" column="9" selection-start-line="0" selection-start-column="9" selection-end-line="0" selection-end-column="9" />
64
+ <state vertical-scroll-proportion="0.0119904075">
65
+ <caret line="1" column="18" selection-start-line="1" selection-start-column="18" selection-end-line="1" selection-end-column="18" />
122
66
  <folding />
123
67
  </state>
124
68
  </provider>
@@ -135,7 +79,6 @@
135
79
  <option value="$PROJECT_DIR$/.gitignore" />
136
80
  <option value="$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_attributes_builder.rb" />
137
81
  <option value="$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_migration_manager.rb" />
138
- <option value="$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_repository.rb" />
139
82
  <option value="$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_store.rb" />
140
83
  <option value="$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_table_manager.rb" />
141
84
  <option value="$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_migration_script.rb" />
@@ -150,6 +93,9 @@
150
93
  <option value="$PROJECT_DIR$/spec/spec_helper.rb" />
151
94
  <option value="$PROJECT_DIR$/Gemfile" />
152
95
  <option value="$PROJECT_DIR$/dynamodb_framework.gemspec" />
96
+ <option value="$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_repository.rb" />
97
+ <option value="$PROJECT_DIR$/README.md" />
98
+ <option value="$PROJECT_DIR$/lib/dynamodb_framework/version.rb" />
153
99
  </list>
154
100
  </option>
155
101
  </component>
@@ -208,6 +154,52 @@
208
154
  <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
209
155
  </PATH_ELEMENT>
210
156
  </PATH>
157
+ <PATH>
158
+ <PATH_ELEMENT>
159
+ <option name="myItemId" value="dynamodb_framework" />
160
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
161
+ </PATH_ELEMENT>
162
+ <PATH_ELEMENT>
163
+ <option name="myItemId" value="dynamodb_framework" />
164
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
165
+ </PATH_ELEMENT>
166
+ <PATH_ELEMENT>
167
+ <option name="myItemId" value="spec" />
168
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
169
+ </PATH_ELEMENT>
170
+ </PATH>
171
+ <PATH>
172
+ <PATH_ELEMENT>
173
+ <option name="myItemId" value="dynamodb_framework" />
174
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
175
+ </PATH_ELEMENT>
176
+ <PATH_ELEMENT>
177
+ <option name="myItemId" value="dynamodb_framework" />
178
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
179
+ </PATH_ELEMENT>
180
+ <PATH_ELEMENT>
181
+ <option name="myItemId" value="lib" />
182
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
183
+ </PATH_ELEMENT>
184
+ </PATH>
185
+ <PATH>
186
+ <PATH_ELEMENT>
187
+ <option name="myItemId" value="dynamodb_framework" />
188
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
189
+ </PATH_ELEMENT>
190
+ <PATH_ELEMENT>
191
+ <option name="myItemId" value="dynamodb_framework" />
192
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
193
+ </PATH_ELEMENT>
194
+ <PATH_ELEMENT>
195
+ <option name="myItemId" value="lib" />
196
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
197
+ </PATH_ELEMENT>
198
+ <PATH_ELEMENT>
199
+ <option name="myItemId" value="dynamodb_framework" />
200
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
201
+ </PATH_ELEMENT>
202
+ </PATH>
211
203
  </subPane>
212
204
  </pane>
213
205
  <pane id="Scratches" />
@@ -290,6 +282,26 @@
290
282
  <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
291
283
  <method />
292
284
  </configuration>
285
+ <configuration default="true" type="RubyRunConfigurationType" factoryName="Ruby">
286
+ <module name="" />
287
+ <RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
288
+ <RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="" />
289
+ <RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
290
+ <RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
291
+ <RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
292
+ <envs />
293
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
294
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
295
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
296
+ <COVERAGE_PATTERN ENABLED="true">
297
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
298
+ </COVERAGE_PATTERN>
299
+ </EXTENSION>
300
+ <EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
301
+ <RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="" />
302
+ <RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="" />
303
+ <method />
304
+ </configuration>
293
305
  <configuration default="true" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest">
294
306
  <predefined_log_file id="RUBY_TESTUNIT" enabled="true" />
295
307
  <module name="" />
@@ -372,118 +384,98 @@
372
384
  </state>
373
385
  </provider>
374
386
  </entry>
375
- <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/version.rb">
387
+ <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_attributes_builder.rb">
376
388
  <provider selected="true" editor-type-id="text-editor">
377
389
  <state vertical-scroll-proportion="0.0">
378
- <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
390
+ <caret line="19" column="3" selection-start-line="19" selection-start-column="3" selection-end-line="19" selection-end-column="3" />
379
391
  <folding />
380
392
  </state>
381
393
  </provider>
382
394
  </entry>
383
- <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_attributes_builder.rb">
395
+ <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_store.rb">
384
396
  <provider selected="true" editor-type-id="text-editor">
385
397
  <state vertical-scroll-proportion="0.0">
386
- <caret line="19" column="3" selection-start-line="19" selection-start-column="3" selection-end-line="19" selection-end-column="3" />
398
+ <caret line="15" column="3" selection-start-line="15" selection-start-column="3" selection-end-line="15" selection-end-column="3" />
387
399
  <folding />
388
400
  </state>
389
401
  </provider>
390
402
  </entry>
391
- <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_migration_manager.rb">
403
+ <entry file="file://$PROJECT_DIR$/.rspec">
392
404
  <provider selected="true" editor-type-id="text-editor">
393
405
  <state vertical-scroll-proportion="0.0">
394
- <caret line="74" column="3" selection-start-line="74" selection-start-column="3" selection-end-line="74" selection-end-column="3" />
406
+ <caret line="2" column="12" selection-start-line="2" selection-start-column="12" selection-end-line="2" selection-end-column="12" />
395
407
  <folding />
396
408
  </state>
397
409
  </provider>
398
410
  </entry>
399
- <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_repository.rb">
411
+ <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework.rb">
400
412
  <provider selected="true" editor-type-id="text-editor">
401
413
  <state vertical-scroll-proportion="0.0">
402
- <caret line="184" column="3" selection-start-line="184" selection-start-column="3" selection-end-line="184" selection-end-column="3" />
403
- <folding>
404
- <element signature="e#528#866#0" expanded="false" />
405
- <element signature="e#870#1127#0" expanded="false" />
406
- <element signature="e#1131#2111#0" expanded="false" />
407
- <element signature="e#2115#3761#0" expanded="false" />
408
- </folding>
414
+ <caret line="6" column="53" selection-start-line="6" selection-start-column="53" selection-end-line="6" selection-end-column="53" />
415
+ <folding />
409
416
  </state>
410
417
  </provider>
411
418
  </entry>
412
- <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_store.rb">
419
+ <entry file="file://$PROJECT_DIR$/spec/test_migration_script2.rb">
413
420
  <provider selected="true" editor-type-id="text-editor">
414
421
  <state vertical-scroll-proportion="0.0">
415
- <caret line="15" column="3" selection-start-line="15" selection-start-column="3" selection-end-line="15" selection-end-column="3" />
422
+ <caret line="22" column="3" selection-start-line="22" selection-start-column="3" selection-end-line="22" selection-end-column="3" />
416
423
  <folding />
417
424
  </state>
418
425
  </provider>
419
426
  </entry>
420
- <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_table_manager.rb">
427
+ <entry file="file://$PROJECT_DIR$/spec/test_item.rb">
421
428
  <provider selected="true" editor-type-id="text-editor">
422
429
  <state vertical-scroll-proportion="0.0">
423
- <caret line="282" column="3" selection-start-line="282" selection-start-column="3" selection-end-line="282" selection-end-column="3" />
424
- <folding>
425
- <element signature="e#113#345#0" expanded="false" />
426
- <element signature="e#349#862#0" expanded="false" />
427
- <element signature="e#866#1449#0" expanded="false" />
428
- <element signature="e#1453#2109#0" expanded="false" />
429
- <element signature="e#2113#2858#0" expanded="false" />
430
- <element signature="e#2862#3321#0" expanded="false" />
431
- <element signature="e#3325#3467#0" expanded="false" />
432
- <element signature="e#3471#3855#0" expanded="false" />
433
- <element signature="e#3859#4181#0" expanded="false" />
434
- <element signature="e#4185#4565#0" expanded="false" />
435
- <element signature="e#4569#4942#0" expanded="false" />
436
- <element signature="e#4946#6146#0" expanded="false" />
437
- <element signature="e#6150#6794#0" expanded="false" />
438
- <element signature="e#6798#7026#0" expanded="false" />
439
- </folding>
430
+ <caret line="5" column="3" selection-start-line="5" selection-start-column="3" selection-end-line="5" selection-end-column="3" />
431
+ <folding />
440
432
  </state>
441
433
  </provider>
442
434
  </entry>
443
- <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_migration_script.rb">
435
+ <entry file="file://$PROJECT_DIR$/spec/spec_helper.rb">
444
436
  <provider selected="true" editor-type-id="text-editor">
445
437
  <state vertical-scroll-proportion="0.0">
446
- <caret line="15" column="3" selection-start-line="15" selection-start-column="3" selection-end-line="15" selection-end-column="3" />
438
+ <caret line="8" column="28" selection-start-line="8" selection-start-column="28" selection-end-line="8" selection-end-column="28" />
447
439
  <folding />
448
440
  </state>
449
441
  </provider>
450
442
  </entry>
451
- <entry file="file://$PROJECT_DIR$/.rspec">
443
+ <entry file="file://$PROJECT_DIR$/Gemfile">
452
444
  <provider selected="true" editor-type-id="text-editor">
453
445
  <state vertical-scroll-proportion="0.0">
454
- <caret line="2" column="12" selection-start-line="2" selection-start-column="12" selection-end-line="2" selection-end-column="12" />
446
+ <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
455
447
  <folding />
456
448
  </state>
457
449
  </provider>
458
450
  </entry>
459
- <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework.rb">
451
+ <entry file="file://$PROJECT_DIR$/dynamodb_framework.gemspec">
460
452
  <provider selected="true" editor-type-id="text-editor">
461
453
  <state vertical-scroll-proportion="0.0">
462
- <caret line="6" column="53" selection-start-line="6" selection-start-column="53" selection-end-line="6" selection-end-column="53" />
454
+ <caret line="13" column="80" selection-start-line="13" selection-start-column="80" selection-end-line="13" selection-end-column="80" />
463
455
  <folding />
464
456
  </state>
465
457
  </provider>
466
458
  </entry>
467
- <entry file="file://$PROJECT_DIR$/spec/test_migration_script1.rb">
459
+ <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_migration_script.rb">
468
460
  <provider selected="true" editor-type-id="text-editor">
469
461
  <state vertical-scroll-proportion="0.0">
470
- <caret line="22" column="3" selection-start-line="22" selection-start-column="3" selection-end-line="22" selection-end-column="3" />
462
+ <caret line="14" column="0" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
471
463
  <folding />
472
464
  </state>
473
465
  </provider>
474
466
  </entry>
475
- <entry file="file://$PROJECT_DIR$/spec/test_migration_script2.rb">
467
+ <entry file="file://$PROJECT_DIR$/spec/dynamodb_table_manager_spec.rb">
476
468
  <provider selected="true" editor-type-id="text-editor">
477
469
  <state vertical-scroll-proportion="0.0">
478
- <caret line="22" column="3" selection-start-line="22" selection-start-column="3" selection-end-line="22" selection-end-column="3" />
470
+ <caret line="0" column="9" selection-start-line="0" selection-start-column="9" selection-end-line="0" selection-end-column="9" />
479
471
  <folding />
480
472
  </state>
481
473
  </provider>
482
474
  </entry>
483
- <entry file="file://$PROJECT_DIR$/spec/test_item.rb">
475
+ <entry file="file://$PROJECT_DIR$/spec/test_migration_script1.rb">
484
476
  <provider selected="true" editor-type-id="text-editor">
485
477
  <state vertical-scroll-proportion="0.0">
486
- <caret line="5" column="3" selection-start-line="5" selection-start-column="3" selection-end-line="5" selection-end-column="3" />
478
+ <caret line="22" column="3" selection-start-line="22" selection-start-column="3" selection-end-line="22" selection-end-column="3" />
487
479
  <folding />
488
480
  </state>
489
481
  </provider>
@@ -496,42 +488,70 @@
496
488
  </state>
497
489
  </provider>
498
490
  </entry>
499
- <entry file="file://$PROJECT_DIR$/spec/dynamodb_repository_spec.rb">
491
+ <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_table_manager.rb">
500
492
  <provider selected="true" editor-type-id="text-editor">
501
493
  <state vertical-scroll-proportion="0.0">
502
- <caret line="0" column="9" selection-start-line="0" selection-start-column="9" selection-end-line="0" selection-end-column="9" />
503
- <folding />
494
+ <caret line="282" column="3" selection-start-line="282" selection-start-column="3" selection-end-line="282" selection-end-column="3" />
495
+ <folding>
496
+ <element signature="e#113#345#0" expanded="false" />
497
+ <element signature="e#349#862#0" expanded="false" />
498
+ <element signature="e#866#1449#0" expanded="false" />
499
+ <element signature="e#1453#2109#0" expanded="false" />
500
+ <element signature="e#2113#2858#0" expanded="false" />
501
+ <element signature="e#2862#3321#0" expanded="false" />
502
+ <element signature="e#3325#3467#0" expanded="false" />
503
+ <element signature="e#3471#3855#0" expanded="false" />
504
+ <element signature="e#3859#4181#0" expanded="false" />
505
+ <element signature="e#4185#4565#0" expanded="false" />
506
+ <element signature="e#4569#4942#0" expanded="false" />
507
+ <element signature="e#4946#6146#0" expanded="false" />
508
+ <element signature="e#6150#6794#0" expanded="false" />
509
+ <element signature="e#6798#7026#0" expanded="false" />
510
+ </folding>
504
511
  </state>
505
512
  </provider>
506
513
  </entry>
507
- <entry file="file://$PROJECT_DIR$/spec/dynamodb_table_manager_spec.rb">
514
+ <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_migration_manager.rb">
508
515
  <provider selected="true" editor-type-id="text-editor">
509
516
  <state vertical-scroll-proportion="0.0">
510
- <caret line="0" column="9" selection-start-line="0" selection-start-column="9" selection-end-line="0" selection-end-column="9" />
517
+ <caret line="34" column="5" selection-start-line="34" selection-start-column="5" selection-end-line="34" selection-end-column="5" />
511
518
  <folding />
512
519
  </state>
513
520
  </provider>
514
521
  </entry>
515
- <entry file="file://$PROJECT_DIR$/spec/spec_helper.rb">
522
+ <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/dynamodb_repository.rb">
516
523
  <provider selected="true" editor-type-id="text-editor">
517
524
  <state vertical-scroll-proportion="0.0">
518
- <caret line="8" column="28" selection-start-line="8" selection-start-column="28" selection-end-line="8" selection-end-column="28" />
519
- <folding />
525
+ <caret line="119" column="186" selection-start-line="119" selection-start-column="186" selection-end-line="119" selection-end-column="186" />
526
+ <folding>
527
+ <element signature="e#530#888#0" expanded="false" />
528
+ <element signature="e#892#1149#0" expanded="false" />
529
+ <element signature="e#1153#2133#0" expanded="false" />
530
+ <element signature="e#2137#3853#0" expanded="false" />
531
+ </folding>
520
532
  </state>
521
533
  </provider>
522
534
  </entry>
523
- <entry file="file://$PROJECT_DIR$/Gemfile">
535
+ <entry file="file://$PROJECT_DIR$/spec/dynamodb_repository_spec.rb">
524
536
  <provider selected="true" editor-type-id="text-editor">
525
537
  <state vertical-scroll-proportion="0.0">
526
- <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
538
+ <caret line="192" column="133" selection-start-line="192" selection-start-column="6" selection-end-line="192" selection-end-column="133" />
527
539
  <folding />
528
540
  </state>
529
541
  </provider>
530
542
  </entry>
531
- <entry file="file://$PROJECT_DIR$/dynamodb_framework.gemspec">
543
+ <entry file="file://$PROJECT_DIR$/README.md">
532
544
  <provider selected="true" editor-type-id="text-editor">
533
- <state vertical-scroll-proportion="0.1558753">
534
- <caret line="13" column="80" selection-start-line="13" selection-start-column="80" selection-end-line="13" selection-end-column="80" />
545
+ <state vertical-scroll-proportion="-37.0">
546
+ <caret line="367" column="77" selection-start-line="367" selection-start-column="77" selection-end-line="367" selection-end-column="77" />
547
+ <folding />
548
+ </state>
549
+ </provider>
550
+ </entry>
551
+ <entry file="file://$PROJECT_DIR$/lib/dynamodb_framework/version.rb">
552
+ <provider selected="true" editor-type-id="text-editor">
553
+ <state vertical-scroll-proportion="0.0119904075">
554
+ <caret line="1" column="18" selection-start-line="1" selection-start-column="18" selection-end-line="1" selection-end-column="18" />
535
555
  <folding />
536
556
  </state>
537
557
  </provider>
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
- # DynamodbFramework
1
+ # DynamoDb_Framework
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/dynamodb_framework`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ Welcome to DynamoDb_Framework, this is a light weight framework that provides managers to help with interacting with aws dynamodb.
6
4
 
7
5
  ## Installation
8
6
 
@@ -22,7 +20,346 @@ Or install it yourself as:
22
20
 
23
21
  ## Usage
24
22
 
25
- TODO: Write usage instructions here
23
+ # MigrationScripts
24
+ To create or modify a DynamoDb instance you first need to create a migration script:
25
+
26
+ **Example**
27
+
28
+ class CreateEventTrackingTableScript < MigrationScript
29
+
30
+ def initialize
31
+ #set the timestamp for when this script was created
32
+ @timestamp = '20160318110710'
33
+ end
34
+
35
+ def apply
36
+ #create an instance of the table manager
37
+ manager = DynamoDbTableManager.new
38
+ #create an attribute builder
39
+ builder = DynamoDbAttributesBuilder.new
40
+
41
+ #set the hash key attribute
42
+ builder.add(:type, :S)
43
+
44
+ #create the table
45
+ manager.create('event_tracking', builder.attributes, :type)
46
+ end
47
+ def undo
48
+
49
+ #create an instance of the table manager
50
+ manager = DynamoDbTableManager.new
51
+
52
+ #drop the table
53
+ manager.drop('event_tracking')
54
+
55
+ end
56
+ end
57
+
58
+ Each migration script should have a unique fixed timestamp value of the following format:
59
+
60
+ yyyymmddhhMMss
61
+
62
+ **Example**
63
+
64
+ 11:07:10 18-03-2016 would be:
65
+
66
+ 20160318110710
67
+
68
+ This timestamp is used to track installation of each migration script and insure correct apply/undo ordering.
69
+
70
+ # DynamoDbMigrationManager
71
+ This manager is called to apply/rollback migration script changes against a DynamoDb instance.
72
+
73
+ ### #connect
74
+ This method is called to connect the manager to the DynamoDb instance. If the migration manager has never been connected to the instance then the 'dynamodb_migrations' table will be created to record migration script executions.
75
+
76
+ **Example**
77
+
78
+ manager = DynamoDbMigrationManager.new
79
+ manager.connect
80
+
81
+ ### #apply
82
+ This method is called to execute any migration scripts (in chronological order) that have not been executed against the current DynamoDb instance.
83
+
84
+ **Example**
85
+
86
+ #apply any outstanding migration scripts
87
+ manager.apply
88
+
89
+ ### #rollback
90
+ This method is called to rollback the last migration script that was executed against the current DynamoDb instance.
91
+
92
+ #rollback the last migration script
93
+ manager.rollback
94
+
95
+ # DynamoDbTableManager
96
+
97
+ This manager object provides the following methods for managing tables within a DynamoDb instance.
98
+
99
+ ### #create
100
+
101
+ This method is called to create a table within DynamoDb.
102
+
103
+ **Params**
104
+
105
+ - **table_name** [String] [Required] This is used to specify the name of the table to create. (Must be unique within the DynamoDb instance).
106
+ - **attributes** [Hash] [Required] This is used to specify the attributes used by the keys and indexes. (Use the DynamoDbAttributesBuilder to create attributes)
107
+ - **partition_key** [Symbol] [Required] This is the document attribute that will be used as the partition key of this table.
108
+ - **range_key** [Symbol / nil] [Optional] This is the document attribute that will be used as the range key for this table.
109
+ - **read_capacity** [Number] [Default=20] This is the read throughput required for this table.
110
+ - **write_capacity** [Number] [Default=10] This is the write throughput required for this table.
111
+ - **global_indexes** [Array / nil] [Optional] This is an array of the global indexes to create for this table. (Use the ***#create_global_index*** method to create each global index required and populate an array for this parameter).
112
+
113
+ **Examples**
114
+
115
+ Table with partition key, no range key and no indexes:
116
+
117
+ #create an attribute builder
118
+ builder = DynamoDbAttributesBuilder.new
119
+
120
+ #set the partition key attribute
121
+ builder.add(:type, :S)
122
+
123
+ #create the table
124
+ manager.create('event_tracking', builder.attributes, :type)
125
+
126
+ Table with partition key, range key and no indexes:
127
+
128
+ #create an attribute builder
129
+ builder = DynamoDbAttributesBuilder.new
130
+
131
+ #set the partition key attribute
132
+ builder.add(:type, :S)
133
+ #set the range key attribute
134
+ builder.add(:timestamp, :S)
135
+
136
+ #create the table
137
+ manager.create('event_tracking', builder.attributes, :type, :timestamp)
138
+
139
+ Table with a global index:
140
+
141
+ #create an attribute builder
142
+ builder = DynamoDbAttributesBuilder.new
143
+
144
+ #set the partition key attribute
145
+ builder.add(:id, :S)
146
+
147
+ global_indexes = []
148
+ #create the global index
149
+ index = manager.create_global_index('type_index', :type)
150
+ #add the index to the global_indexes array
151
+ global_indexes.push(index)
152
+
153
+ #create the table and the index
154
+ manager.create('event_tracking', builder.attributes, :id, :nil, 20, 10, global_indexes)
155
+
156
+ ### #drop
157
+ This method is called to drop a table.
158
+
159
+ > **WARNING**: *This will drop all data stored within the table*
160
+
161
+ **Params**
162
+
163
+ - **table_name** [String] [Required] This is the name of the table to drop.
164
+
165
+ **Example**
166
+
167
+ #drop the table
168
+ manager.drop('event_tracking')
169
+
170
+ ### #exists?(table_name)
171
+
172
+ This method is called to check if a table exists within the database.
173
+
174
+ manager.exists?('event_tracking')
175
+ => true
176
+
177
+
178
+ ### #add_index
179
+ This method is called to add an index to an existing table.
180
+
181
+ **Params**
182
+
183
+ - **table_name** [String] [Required] This is the name of the index. (Must be unique within the scope of the table)
184
+ - **attributes** [Hash] [Required] This is the document attributes used by the table keys and index keys. (Use the DynamoDbAttributesBuilder to create the attributes hash.)
185
+ - **global_index** [Hash] [Required] This is the global index to add to the table. (Use the ***#create_global_index*** method to create the global index hash.)
186
+
187
+ **Example**
188
+
189
+ #build the attributes hash
190
+ builder = DynamoDbAttributesBuilder.new
191
+ #add the attribute for the tables partition key & range key (if range key required)
192
+ builder.add(:id, :S)
193
+ #add the attributes for the index partition key and range key (if required)
194
+ builder.add(:type, :S)
195
+
196
+ #create the index hash
197
+ index = manager.create_global_index('type_index', :type)
198
+
199
+ #add the index to the table
200
+ manager.add_index('event_tracking', builder.attributes, index)
201
+
202
+
203
+ ### #drop_index
204
+ This method is called to drop an existing index from a table.
205
+
206
+ **Params**
207
+
208
+ - **table_name** [String] [Required] This is the name of the table you want to remove the index from.
209
+ - **index_name** [String] [Required] This is the name of the index you want to remove.
210
+
211
+ **Example**
212
+
213
+ #drop the index
214
+ manager.drop_index('event_tracking', 'type_index')
215
+
216
+ ### #update_index_throughput
217
+
218
+ This method is called to update the throughput required by an index.
219
+
220
+ **Params**
221
+
222
+ - **table_name** [String] [Required] This is the name of the table the index belongs to.
223
+ - **index_name** [String] [Required] This is the name of the index to update.
224
+ - **read_capacity** [Number] [Required] This is the read throughput required per second.
225
+ - **write_capacity** [Number] [Required] This is the write throughput required per second.
226
+
227
+ **Example**
228
+
229
+ #update the index
230
+ manager.update_index_throughput('event_tracking', 'type_index', 50, 20)
231
+
232
+ ### #has_index?(table_name, index_name)
233
+
234
+ This method is called to check if an index exists on a table within the database.
235
+
236
+ manager.has_index?('event_tracking', 'event_type')
237
+ => true
238
+
239
+
240
+ # DynamoDbRepository
241
+
242
+ This is a base repository that exposes core functionality for interacting with a DynamoDb table. It is intended to be wrapped inside of a table specific repository, and is only provided to give a common way of interacting with a DynamoDb table.
243
+
244
+ Before calling any methods from the repository the **.table_name** attribute must be set so that the repository knows which table to run the operations against.
245
+
246
+ **Example**
247
+
248
+ repository.table_name = 'event_tracking'
249
+
250
+ ### #put
251
+ This method is called to insert an item into a DynamoDb table.
252
+
253
+ **Params**
254
+
255
+ - **item** [Object] [Required] The document to store within the table.
256
+
257
+ **Example**
258
+
259
+ #add the document object to the table
260
+ repository.put(item)
261
+
262
+ ### #delete
263
+
264
+ This method is called to delete a document from a DynamoDb table.
265
+
266
+ **Params**
267
+
268
+ - **keys** [Hash] [Required] This is a hash of the primary key of the document you want to delete. (The keys hash should contain the partition_key and if the table requires it the range_key.)
269
+
270
+ **Example**
271
+
272
+ #delete an item where the partition key (:id) is the primary key
273
+ repository.delete({ :id => '012' })
274
+
275
+ #delete an item where the partition key (:type) and the range key (:index) is the primary key
276
+ repository.delete({ :type => 'list', :index => 2 })
277
+
278
+ ### #get_by_key
279
+ This method is called to get a single item from a table by its key.
280
+
281
+ **Params**
282
+
283
+ - **partition_key** [Symbol] [Required] This is the document attribute that is the partition key for the table.
284
+ - **partition_key_value** [String / Number] [Required] This is the value of the documents partition key.
285
+ - **range_key** [Symbol] [Optional] This is the document attribute that is the range key for the table.
286
+ - **range_key_value** [String / Number] [Optional] This is the value of the documents range key.
287
+
288
+ **Example**
289
+
290
+ #get an item where the partition key is the primary key
291
+ item = repository.get(:id, '12345')
292
+
293
+ #get an item where the partition key and the range key is the primary key
294
+ item = repository.get(:type, 'list', :index, 2)
295
+
296
+
297
+ ### #all
298
+ This method is called to get all items from a table.
299
+
300
+ **Example**
301
+
302
+
303
+ #get all items from table
304
+ all_items_array = repository.all
305
+
306
+ ### #scan
307
+ This method is called to execute a query against an entire table bypassing any indexes.
308
+
309
+ > **WARNING:** *Full table scans are slower than queries ran against a global index.*
310
+
311
+ **Params**
312
+
313
+ - **expression** [String] [Required] This is an expression string for that contains the filter expression to run against the full table scan.
314
+ - **expression_params** [Hash] [Required] This is a hash that contains the parameter names & values used by parameters within the scan expression.
315
+ - **limit** [Number] [Optional] This is used to specify a limit to the number of records returned by the scan query.
316
+ - **count** [Bool] [Optional] This is used to specify that the scan query should only return a count of the items that match the scan query.
317
+
318
+ **Example**
319
+
320
+ #scan the table and return matching items
321
+ results = repository.scan('#type = :type and #index > :index', { '#type' => :type, ':type' => 'list', '#index' => :index, ':index' => 2 })
322
+
323
+ #scan the table and return matching items limited to 5 results
324
+ results = repository.scan('#type = :type and #index > :index', { '#type' => :type, ':type' => 'list', '#index' => :index, ':index' => 2 }, 5)
325
+
326
+ #scan the table and return a count of matching items
327
+ count = repository.scan('#type = :type and #index > :index', { '#type' => :type, ':type' => 'list', '#index' => :index, ':index' => 2 }, nil, true)
328
+
329
+ > **Notes:**
330
+ > Attribute names should be specified using Expression parameter names which should start with a #
331
+ > Attribute values should be specified using Expression parameter values which should start with a :
332
+
333
+
334
+ ### #query
335
+ This method is called to execute a query against either a table partition or an index.
336
+
337
+ **Params**
338
+
339
+ - **partition_key_name** [Symbol] [Required] This is used to specify the attribute that is used as the partition key for this table.
340
+ - **partition_key_value** [String / Number] [Required] This is used to specify the value of the partition to run this query against.
341
+ - **range_key_name** [Symbol] [Optional] This is used to specify the range key to run this query against if needed.
342
+ - **range_key_value** [String / Number] [Optional] This is used to specify the value of the range key to run this query against if needed.
343
+ - **expression** [String] [Required] This is an expression string used to specify the filter to run against the records found within the partition/range.
344
+ - **expression_params** [Hash] [Required] This is a hash that contains the parameter names & values used by parameters within the query expression.
345
+ - **index_name** [String] [Optional] This is the name of the index to run this query against.
346
+ - **limit** [Number] [Optional] This is used to specify a limit to the number of records returned by the query.
347
+ - **count** [Bool] [Optional] This is used to specify that the scan query should only return a count of the items that match the query.
348
+
349
+ **Examples**
350
+
351
+ Query from a table partition without an index:
352
+
353
+ results = repository.query(:name, 'name 1', nil, nil, '#number > :number', { '#number' => 'number', ':number' => 2})
354
+
355
+ Query and Count from a table partition without an index:
356
+
357
+ count = repository.query(:name, 'name 1', nil, nil, '#number > :number', { '#number' => 'number', ':number' => 2}, nil, nil, true)
358
+
359
+ Query from an index partition:
360
+
361
+ results = repository.query(:name, 'name 1', nil, nil, '#number > :number', { '#number' => 'number', ':number' => 2}, 'name_index')
362
+
26
363
 
27
364
  ## Development
28
365
 
@@ -32,10 +369,9 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
369
 
33
370
  ## Contributing
34
371
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/dynamodb_framework. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
372
+ Bug reports and pull requests are welcome on GitHub at https://github.com/vaughanbrittonsage/dynamodb_framework. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
373
 
37
374
 
38
375
  ## License
39
376
 
40
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
41
-
377
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -22,22 +22,22 @@ class DynamoDbRepository
22
22
 
23
23
  end
24
24
 
25
- def delete(key)
25
+ def delete(keys)
26
26
 
27
27
  params =
28
28
  {
29
29
  table_name: @table_name,
30
- key: key
30
+ key: keys
31
31
  }
32
32
 
33
33
  dynamodb.client.delete_item(params)
34
34
 
35
35
  end
36
36
 
37
- def get_by_key(hash_key, hash_value, range_key = nil, range_value = nil)
37
+ def get_by_key(partition_key, partition_value, range_key = nil, range_value = nil)
38
38
 
39
39
  key = {}
40
- key[hash_key] = hash_value
40
+ key[partition_key] = partition_value
41
41
  if(range_key != nil)
42
42
  key[range_key] = range_value
43
43
  end
@@ -117,7 +117,7 @@ class DynamoDbRepository
117
117
 
118
118
  end
119
119
 
120
- def query(hash_key_name, hash_key_value, range_key_name = nil, range_key_value = nil, expression = nil, expression_params = nil, index_name = nil, limit = nil, count = false)
120
+ def query(partition_key_name, partition_key_value, range_key_name = nil, range_key_value = nil, expression = nil, expression_params = nil, index_name = nil, limit = nil, count = false)
121
121
 
122
122
  params = {
123
123
  table_name: table_name
@@ -132,13 +132,13 @@ class DynamoDbRepository
132
132
  end
133
133
 
134
134
  if range_key_name != nil
135
- params[:key_condition_expression] = '#hash_key = :hash_key and #range_key = :range_key'
136
- params[:expression_attribute_names] = { '#hash_key' => hash_key_name, '#range_key' => range_key_name }
137
- params[:expression_attribute_values] = { ':hash_key' => hash_key_value, ':range_key' => range_key_value }
135
+ params[:key_condition_expression] = '#partition_key = :partition_key and #range_key = :range_key'
136
+ params[:expression_attribute_names] = { '#partition_key' => partition_key_name, '#range_key' => range_key_name }
137
+ params[:expression_attribute_values] = { ':partition_key' => partition_key_value, ':range_key' => range_key_value }
138
138
  else
139
- params[:key_condition_expression] = '#hash_key = :hash_key'
140
- params[:expression_attribute_names] = { '#hash_key' => hash_key_name }
141
- params[:expression_attribute_values] = { ':hash_key' => hash_key_value }
139
+ params[:key_condition_expression] = '#partition_key = :partition_key'
140
+ params[:expression_attribute_names] = { '#partition_key' => partition_key_name }
141
+ params[:expression_attribute_values] = { ':partition_key' => partition_key_value }
142
142
  end
143
143
 
144
144
  if expression_params != nil
@@ -1,3 +1,3 @@
1
1
  module DynamodbFramework
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamodb_framework
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - vaughanbrittonsage