dynamoid 3.7.1 → 3.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +246 -244
  3. data/LICENSE.txt +2 -2
  4. data/README.md +134 -55
  5. data/SECURITY.md +17 -0
  6. data/dynamoid.gemspec +66 -0
  7. data/lib/dynamoid/adapter.rb +7 -9
  8. data/lib/dynamoid/adapter_plugin/aws_sdk_v3/batch_get_item.rb +2 -2
  9. data/lib/dynamoid/adapter_plugin/aws_sdk_v3/execute_statement.rb +62 -0
  10. data/lib/dynamoid/adapter_plugin/aws_sdk_v3/item_updater.rb +29 -15
  11. data/lib/dynamoid/adapter_plugin/aws_sdk_v3/middleware/limit.rb +3 -0
  12. data/lib/dynamoid/adapter_plugin/aws_sdk_v3.rb +73 -59
  13. data/lib/dynamoid/associations/single_association.rb +28 -9
  14. data/lib/dynamoid/components.rb +2 -3
  15. data/lib/dynamoid/criteria/chain.rb +13 -9
  16. data/lib/dynamoid/criteria.rb +6 -7
  17. data/lib/dynamoid/dirty.rb +60 -63
  18. data/lib/dynamoid/document.rb +42 -12
  19. data/lib/dynamoid/errors.rb +2 -0
  20. data/lib/dynamoid/fields.rb +19 -37
  21. data/lib/dynamoid/finders.rb +9 -4
  22. data/lib/dynamoid/indexes.rb +45 -40
  23. data/lib/dynamoid/loadable.rb +6 -1
  24. data/lib/dynamoid/log/formatter.rb +19 -4
  25. data/lib/dynamoid/persistence/import.rb +4 -1
  26. data/lib/dynamoid/persistence/inc.rb +66 -0
  27. data/lib/dynamoid/persistence/save.rb +52 -5
  28. data/lib/dynamoid/persistence/update_fields.rb +1 -1
  29. data/lib/dynamoid/persistence/update_validations.rb +1 -1
  30. data/lib/dynamoid/persistence/upsert.rb +1 -1
  31. data/lib/dynamoid/persistence.rb +149 -61
  32. data/lib/dynamoid/undumping.rb +18 -0
  33. data/lib/dynamoid/validations.rb +6 -0
  34. data/lib/dynamoid/version.rb +1 -1
  35. data/lib/dynamoid.rb +1 -0
  36. metadata +30 -50
data/CHANGELOG.md CHANGED
@@ -1,111 +1,160 @@
1
- # HEAD
2
-
3
- ---
4
-
5
-
6
-
7
- # 3.7.1 / 2021-06-30
8
-
9
- ## Fixes
10
-
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+
9
+ ### Fixed
10
+
11
+ ### Added
12
+
13
+ ### Changed
14
+
15
+ ### Removed
16
+
17
+ ## 3.9.0
18
+ ### Fixed
19
+ * [#610](https://github.com/Dynamoid/dynamoid/pull/610) Specs in JRuby; Support for JRuby 9.4.0.0 (@pboling)
20
+ * [#624](https://github.com/Dynamoid/dynamoid/pull/624) Fixed `#increment!`/`#decrement!` methods and made them compatible with Rails counterparts
21
+ * [#626](https://github.com/Dynamoid/dynamoid/pull/626) Fixed saving empty Set and String and replacing with `nil` in `#update`, `#update!`, `.update_fields`, and `.upsert` methods
22
+ * [#628](https://github.com/Dynamoid/dynamoid/pull/628) Fixed `.import` method to mark persisted model attributes as not changed/not dirty
23
+ * [#632](https://github.com/Dynamoid/dynamoid/pull/632) Fixed `#save` called with `touch: false` option to set `updated_at` attribute even for a new record (to comply with Rails)
24
+ * [#634](https://github.com/Dynamoid/dynamoid/pull/634) Fixed model callbacks:
25
+ * changed order of `save` and `create`/`update` callbacks - `save` callbacks are outer for the `create`/`update` ones
26
+ * removed `before_initialize` and `around_initialize` callbacks - there should be only `after_initialize` one
27
+ * [#634](https://github.com/Dynamoid/dynamoid/pull/634) Fixed `#touch` method compatibility with a Rails counterpart:
28
+ * don't save other modified attributes - only timestamps
29
+ * don't perform validation and don't call `save`/`create`/`update` callbacks
30
+ * accept a list of attribute names, but not one name
31
+ * accept a `:time` option
32
+ ### Added
33
+ * [#611](https://github.com/Dynamoid/dynamoid/pull/611) Add `rubocop-md` (@pboling)
34
+ * [#612](https://github.com/Dynamoid/dynamoid/pull/612) Add `rubocop-rspec` (@pboling)
35
+ * [#613](https://github.com/Dynamoid/dynamoid/pull/613) Add `rubocop-performance` and `rubocop-rake` (@pboling)
36
+ * Added `funding_uri` set to open collective: https://opencollective.com/dynamoid
37
+ * Added `required_ruby_version` as `>= 2.3.0` (which was already the minimum supported version of Ruby)
38
+ * [#616](https://github.com/Dynamoid/dynamoid/pull/616) Upgrade `simplecov` (& remove `coveralls`) (@pboling)
39
+ * Setup GitHub actions for Code Coverage
40
+ * Setup GitHub actions for RuboCop linting
41
+ * Automate coverage feedback on Pull Requests via GitHub Actions and CodeCov
42
+ * [#618](https://github.com/Dynamoid/dynamoid/pull/618) Upgrade README Badges (@pboling)
43
+ * [#624](https://github.com/Dynamoid/dynamoid/pull/624) Added `:touch` option for `.inc` method to be more compatible with the Rails counterpart method `.update_counters`
44
+ * [#627](https://github.com/Dynamoid/dynamoid/pull/627) Made the following methods in the Dirty API public (to comply with Rails):
45
+ * `clear_changes_information`
46
+ * `changes_applied`
47
+ * `clear_attribute_changes`
48
+ * [#630](https://github.com/Dynamoid/dynamoid/pull/630) Added `Dynamoid::Adapter#execute` method to run PartiQL queries
49
+ * [#634](https://github.com/Dynamoid/dynamoid/pull/634) Added `after_touch` callback and run it in the following methods:
50
+ * `#touch`
51
+ * `#increment!`
52
+ * `#decrement!`
53
+ * [#642](https://github.com/Dynamoid/dynamoid/pull/642) Run specs on CI agains Ruby 3.2
54
+ * [#645](https://github.com/Dynamoid/dynamoid/pull/645) Added `after_find` callback
55
+ ### Changed
56
+ * [#610](https://github.com/Dynamoid/dynamoid/pull/610) Switch to [`rubocop-lts`](https://rubocop-lts.gitlab.io/) (@pboling)
57
+ ### Removed
58
+ * [#633](https://github.com/Dynamoid/dynamoid/pull/633) Change `#inspect` method to return only attributes
59
+ * [#623](https://github.com/Dynamoid/dynamoid/pull/623) Optimized performance of persisting to send only changed attributes in a request to DynamoDB
60
+
61
+ ## 3.8.0
62
+ ### Fixed
63
+ * [#525](https://github.com/Dynamoid/dynamoid/pull/525) Don't mark an attribute as changed if new assigned value equals the old one (@a5-stable)
64
+ * Minor changes in the documentation:
65
+ * [#526](https://github.com/Dynamoid/dynamoid/pull/526) (@a5-stable)
66
+ * [#528](https://github.com/Dynamoid/dynamoid/pull/528) (@a5-stable)
67
+ * [#589](https://github.com/Dynamoid/dynamoid/pull/589) (@jrhoads)
68
+ * [#527](https://github.com/Dynamoid/dynamoid/pull/527) Fix `update_fields` and `upsert` methods - take into account the table-specific `timestamps` option for setting the `updated_at` attribute
69
+ (@oieioi)
70
+ * [#533](https://github.com/Dynamoid/dynamoid/pull/533) Allow attribute with custom type to be used as a partition or sort key of DynamoDB index (@rahul342)
71
+ * [#558](https://github.com/Dynamoid/dynamoid/pull/558) Change the way how a filename is derived from a model class name in a warning about using the Scan operation (@a5-stable)
72
+ * [#567](https://github.com/Dynamoid/dynamoid/pull/567) Fix `#reload` and mark a reloaded model as persisted
73
+ * [#573](https://github.com/Dynamoid/dynamoid/pull/573) Fix proxying of method calls with keyword arguments called on an association for Ruby 2.7 and above (@xeger)
74
+ * [#579](https://github.com/Dynamoid/dynamoid/pull/579) Fix `create_table` method when a `table_name` option passed in case a model has TTL setting enabled (@ta1kt0me)
75
+ * [#591](https://github.com/Dynamoid/dynamoid/pull/591) Multiple fixes:
76
+ * Fix `#update` and `#update!` - take into account the table-specific `timestamps` option for setting the `updated_at` attribute
77
+ * Fix `#update_attribute` - skip validation
78
+ * Return `self` in some public methods to enable methods chaining
79
+ * [#601](https://github.com/Dynamoid/dynamoid/pull/601) Fix `#first` and `#pluck` methods: do not mutate query parameters and affect other query methods.
80
+
81
+ ### Added
82
+ * [#531](https://github.com/Dynamoid/dynamoid/pull/531) Run `before_update` and `after_update` callbacks at saving a model (@a5-stable)
83
+ * [#536](https://github.com/Dynamoid/dynamoid/pull/536) Modernization
84
+ * Support for Ruby 3.1
85
+ * Support for Rails 7.0
86
+ * Keep a Changelog Format
87
+
88
+ ## 3.7.1 / 2021-06-30
89
+ ### Fixed
11
90
  * [#484](https://github.com/Dynamoid/dynamoid/pull/484) Fix model deletion - update cached foreign keys in associated models when delete a model
12
91
  * [#492](https://github.com/Dynamoid/dynamoid/pull/492) Fix using `:date` field as an index hash/range key (@yoshida-eth0)
13
92
  * [#503](https://github.com/Dynamoid/dynamoid/pull/503) Fix explicit forcing index with `#with_index` method when perform Scan operation (@bmalinconico)
14
93
  * [#511](https://github.com/Dynamoid/dynamoid/pull/511) Fix `BatchGetItem` operation when partial result returned (so there are unprocessed keys) and table has a range key. The fix affects `.find_all` method only (@Bajena)
15
94
 
16
-
17
-
18
- # 3.7.0 / 2021-02-02
19
-
20
-
21
- ## Features
22
-
95
+ ## 3.7.0 / 2021-02-02
96
+ ### Added
23
97
  * [#476](https://github.com/Dynamoid/dynamoid/pull/476) Added `#with_index` method to force an index in query (@bmalinconico)
24
98
  * [#481](https://github.com/Dynamoid/dynamoid/pull/481) Added `alias` option to the `field` method to declare a field alias and use more conventional name to set and get value
25
99
 
26
- ## Improvements
27
-
100
+ ### Changed
28
101
  * [#482](https://github.com/Dynamoid/dynamoid/pull/482) Support Ruby 3.0 and Rails 6.1
29
102
  * [#461](https://github.com/Dynamoid/dynamoid/pull/461) Allow to delete item attribute with `#update` method (@jkirsteins)
30
103
  * [#463](https://github.com/Dynamoid/dynamoid/pull/463) Raise `UnknownAttribute` exception when specified not declared attribute name (@AlexGascon)
31
104
 
32
- ## Fixes
33
-
105
+ ### Fixed
34
106
  * [#480](https://github.com/Dynamoid/dynamoid/pull/480) Repair `.consistent`/`.delete_all`/`.destroy_all` calls directly on a model class
35
107
  * [#484](https://github.com/Dynamoid/dynamoid/pull/484) Fix broken foreign keys after model deleting (@kkan)
36
- * Fixes in Readme.md: [#470](https://github.com/Dynamoid/dynamoid/pull/470) (@rromanchuk), [#473](https://github.com/Dynamoid/dynamoid/pull/473) (@Rulikkk)
37
-
38
- ---
39
-
40
-
41
-
42
- # 3.6.0 / 2020-07-13
43
-
44
-
45
- ## Features
108
+ * Fixed in Readme.md: [#470](https://github.com/Dynamoid/dynamoid/pull/470) (@rromanchuk), [#473](https://github.com/Dynamoid/dynamoid/pull/473) (@Rulikkk)
46
109
 
110
+ ## 3.6.0 / 2020-07-13
111
+ ### Added
47
112
  * [#458](https://github.com/Dynamoid/dynamoid/pull/458) Added `binary` field type
48
113
  * [#459](https://github.com/Dynamoid/dynamoid/pull/459) Added `log_formatter` config option and changed default logging format
49
114
 
50
- ## Improvements
51
-
115
+ ### Changed
52
116
  * [#423](https://github.com/Dynamoid/dynamoid/pull/423) Added warning when generated for a field methods override existing ones
53
117
  * [#429](https://github.com/Dynamoid/dynamoid/pull/429) Added `raise_error` option for `find` method
54
118
  * [#440](https://github.com/Dynamoid/dynamoid/pull/440) Optimized performance of `first` method when there are only conditions on key attribute in a query (@mrkamel)
55
119
  * [#445](https://github.com/Dynamoid/dynamoid/pull/445) Support `limit` parameter in `first` method (@mrkamel)
56
- * [#450](https://github.com/Dynamoid/dynamoid/pull/450) Got rid of `null-logger` gem to make Dynamoid dependencies license suitable for commercial use (@yakjuly)
57
120
  * [#454](https://github.com/Dynamoid/dynamoid/pull/454) Added block argument to `create`/`create!` methods
58
121
  * [#456](https://github.com/Dynamoid/dynamoid/pull/456) Detect when `find` method requires a range key argument and raise `Dynamoid::Errors::MissingRangeKey` exception if it's missing
59
122
  * YARD documentation:
60
123
  * added missing documentation so now all the public methods are documented
61
124
  * hid all the private methods and classes
62
125
 
63
- ## Fixes
126
+ ### Removed
127
+ * [#450](https://github.com/Dynamoid/dynamoid/pull/450) Got rid of `null-logger` gem to make Dynamoid dependencies license suitable for commercial use (@yakjuly)
64
128
 
129
+ ### Fixed
65
130
  * [#425](https://github.com/Dynamoid/dynamoid/pull/425) Fixed typos in the README.md file (@omarsotillo)
66
131
  * [#432](https://github.com/Dynamoid/dynamoid/pull/432) Support tables that use "hash_key" as their partition key name (@remomueller)
67
132
  * [#434](https://github.com/Dynamoid/dynamoid/pull/434) Support tables that have attribute with name "range_value"
68
133
  * [#453](https://github.com/Dynamoid/dynamoid/pull/453) Fixed issue with using `type` attribute as a GSI hash key
69
134
 
70
- ---
71
-
72
-
73
-
74
- # 3.5.0 / 2020-04-04
75
-
76
-
77
- ## Features
78
- * Feature: [#405](https://github.com/Dynamoid/dynamoid/pull/405) Added `update!` class method (@UrsaDK)
79
- * Feature: [#408](https://github.com/Dynamoid/dynamoid/pull/408) Added `ActiveSupport` load hook on `Dynamoid` load (@aaronmallen)
80
- * Feature: [#422](https://github.com/Dynamoid/dynamoid/pull/422) Added `.pluck` method
81
-
82
- ## Fixes:
83
- * Fix: [#410](https://github.com/Dynamoid/dynamoid/pull/410) Fixed creating GSI when table uses on-demand capacity provisioning (@icy-arctic-fox)
84
- * Fix: [#414](https://github.com/Dynamoid/dynamoid/pull/414) Fixed lazy table creation
85
- * Fix: [#415](https://github.com/Dynamoid/dynamoid/pull/415) Fixed RubyDoc comment (@walkersumida)
86
- * Fix: [#420](https://github.com/Dynamoid/dynamoid/pull/420) Fixed `#persisted?` for deleted/destroyed models
87
-
88
- ## Improvements:
89
- * Improvement: [#416](https://github.com/Dynamoid/dynamoid/pull/416) Improved speed of Adapter's `truncate` method. It now uses `#batch_delete_item` method (@TheSmartnik)
90
- * Improvement: [#421](https://github.com/Dynamoid/dynamoid/pull/421) Added `touch: false` option of the #save method
91
- * Improvement: [#423](https://github.com/Dynamoid/dynamoid/pull/423) Added warning when generated for a field methods override existing ones
92
-
93
- ---
94
-
95
-
96
-
97
- # 3.4.1
135
+ ## 3.5.0 / 2020-04-04
136
+ ### Added
137
+ * [#405](https://github.com/Dynamoid/dynamoid/pull/405) Added `update!` class method (@UrsaDK)
138
+ * [#408](https://github.com/Dynamoid/dynamoid/pull/408) Added `ActiveSupport` load hook on `Dynamoid` load (@aaronmallen)
139
+ * [#422](https://github.com/Dynamoid/dynamoid/pull/422) Added `.pluck` method
140
+
141
+ ### Fixed
142
+ * [#410](https://github.com/Dynamoid/dynamoid/pull/410) Fixed creating GSI when table uses on-demand capacity provisioning (@icy-arctic-fox)
143
+ * [#414](https://github.com/Dynamoid/dynamoid/pull/414) Fixed lazy table creation
144
+ * [#415](https://github.com/Dynamoid/dynamoid/pull/415) Fixed RubyDoc comment (@walkersumida)
145
+ * [#420](https://github.com/Dynamoid/dynamoid/pull/420) Fixed `#persisted?` for deleted/destroyed models
146
+
147
+ ### Changed
148
+ * [#416](https://github.com/Dynamoid/dynamoid/pull/416) Improved speed of Adapter's `truncate` method. It now uses `#batch_delete_item` method (@TheSmartnik)
149
+ * [#421](https://github.com/Dynamoid/dynamoid/pull/421) Added `touch: false` option of the #save method
150
+ * [#423](https://github.com/Dynamoid/dynamoid/pull/423) Added warning when generated for a field methods override existing ones
98
151
 
99
- ## Fixes
152
+ ## 3.4.1
153
+ ### Fixed
100
154
  * Fix: [#398](https://github.com/Dynamoid/dynamoid/pull/398) Fix broken configuration
101
155
 
102
- ---
103
-
104
-
105
-
106
- # 3.4.0
107
-
108
- ## Features
156
+ ## 3.4.0
157
+ ### Added
109
158
  * Feature: [#386](https://github.com/Dynamoid/dynamoid/pull/386) Disable timestamps fields on a table level with new
110
159
  table option `timestamps`
111
160
  * Feature: [#387](https://github.com/Dynamoid/dynamoid/pull/387) Add TTL support with table option `expires`
@@ -113,137 +162,102 @@
113
162
  option `credentials` (@emmajhyde)
114
163
  * Feature: [#397](https://github.com/Dynamoid/dynamoid/pull/397) Configure on-demand table capacity mode with `capacity_mode` option
115
164
 
116
- ## Improvements
165
+ ### Changed
117
166
  * Improvement: [#388](https://github.com/Dynamoid/dynamoid/pull/388) Minor memory optimization - don't allocate excessive
118
167
  hash (@arjes)
119
168
 
120
- ## Fixes
121
-
169
+ ### Fixed
122
170
  * Fix: [#382](https://github.com/Dynamoid/dynamoid/pull/382) Fixed deprecation warning about `Module#parent_name` in Rails 6 (@tmandke)
123
171
  * Fix: Typos in Readme.md (@romeuhcf)
124
172
 
125
- ---
126
-
127
-
128
-
129
- # 3.3.0
130
-
131
- ## Features
132
-
133
- * Feature: [#374](https://github.com/Dynamoid/dynamoid/pull/374) Add `#project` query method to load only specified fields
134
-
135
- ## Improvements
136
-
137
- * Improvement: [#359](https://github.com/Dynamoid/dynamoid/pull/359) Add support of `NULL` and `NOT_NULL` operators
138
- * Improvement: [#360](https://github.com/Dynamoid/dynamoid/pull/360) Add `store_attribute_with_nil_value` config option
139
- * Improvement: [#368](https://github.com/Dynamoid/dynamoid/pull/368) Support Rails 6 (RC1)
140
-
141
- ## Fixes
142
- * Fix: [#357](https://github.com/Dynamoid/dynamoid/pull/357) Fix synchronous table creation issue
143
- * Fix: [#362](https://github.com/Dynamoid/dynamoid/pull/362) Fix issue with selecting Global Secondary Index (@atyndall)
144
- * Fix: [#368](https://github.com/Dynamoid/dynamoid/pull/368) Repair `#previous_changes` method from Dirty API
145
- * Fix: [#373](https://github.com/Dynamoid/dynamoid/pull/373) Fix threadsafety of loading `Dynamoid::Adapter` (@tsub)
146
-
147
- ---
148
-
149
-
150
-
151
- # 3.2.0
152
-
153
- ## Features
154
- * Feature: [#341](https://github.com/Dynamoid/dynamoid/pull/341), [#342](https://github.com/Dynamoid/dynamoid/pull/342) Add `find_by_pages` method to provide access to DynamoDB query result pagination mechanism (@bmalinconico, @arjes)
155
- * Feature: [#354](https://github.com/Dynamoid/dynamoid/pull/354) Add `map` field type
156
-
157
- ## Improvements
158
- * Improvement: [#340](https://github.com/Dynamoid/dynamoid/pull/340) Improve selecting more optimal GSI for Query operation - choose GSI with sort key if it's used in criteria (@ryz310)
159
- * Improvement: [#351](https://github.com/Dynamoid/dynamoid/pull/351) Add warnings about nonexistent fields in `where` conditions
160
- * Improvement: [#352](https://github.com/Dynamoid/dynamoid/pull/352) Add warning about skipped conditions
161
- * Improvement: [#356](https://github.com/Dynamoid/dynamoid/pull/356) Simplify requiring Rake tasks in non-Rails application
162
- * Improvement: Readme.md. Minor improvements and fixes (@cabello)
163
-
164
-
165
-
166
- # 3.1.0
167
-
168
- ## Improvements
169
- * Feature: [#302](https://github.com/Dynamoid/dynamoid/pull/302) Add methods similar to `ActiveRecord::AttributeMethods::BeforeTypeCast`:
173
+ ## 3.3.0
174
+ ### Added
175
+ * [#374](https://github.com/Dynamoid/dynamoid/pull/374) Add `#project` query method to load only specified fields
176
+
177
+ ### Changed
178
+ * [#359](https://github.com/Dynamoid/dynamoid/pull/359) Add support of `NULL` and `NOT_NULL` operators
179
+ * [#360](https://github.com/Dynamoid/dynamoid/pull/360) Add `store_attribute_with_nil_value` config option
180
+ * [#368](https://github.com/Dynamoid/dynamoid/pull/368) Support Rails 6 (RC1)
181
+
182
+ ### Fixed
183
+ * [#357](https://github.com/Dynamoid/dynamoid/pull/357) Fix synchronous table creation issue
184
+ * [#362](https://github.com/Dynamoid/dynamoid/pull/362) Fix issue with selecting Global Secondary Index (@atyndall)
185
+ * [#368](https://github.com/Dynamoid/dynamoid/pull/368) Repair `#previous_changes` method from Dirty API
186
+ * [#373](https://github.com/Dynamoid/dynamoid/pull/373) Fix threadsafety of loading `Dynamoid::Adapter` (@tsub)
187
+
188
+ ## 3.2.0
189
+ ### Added
190
+ * [#341](https://github.com/Dynamoid/dynamoid/pull/341), [#342](https://github.com/Dynamoid/dynamoid/pull/342) Add `find_by_pages` method to provide access to DynamoDB query result pagination mechanism (@bmalinconico, @arjes)
191
+ * [#354](https://github.com/Dynamoid/dynamoid/pull/354) Add `map` field type
192
+
193
+ ### Changed
194
+ * [#340](https://github.com/Dynamoid/dynamoid/pull/340) Improve selecting more optimal GSI for Query operation - choose GSI with sort key if it's used in criteria (@ryz310)
195
+ * [#351](https://github.com/Dynamoid/dynamoid/pull/351) Add warnings about nonexistent fields in `where` conditions
196
+ * [#352](https://github.com/Dynamoid/dynamoid/pull/352) Add warning about skipped conditions
197
+ * [#356](https://github.com/Dynamoid/dynamoid/pull/356) Simplify requiring Rake tasks in non-Rails application
198
+ * Readme.md. Minor improvements and Fixed (@cabello)
199
+
200
+ ## 3.1.0
201
+ ### Added
202
+ * [#302](https://github.com/Dynamoid/dynamoid/pull/302) Add methods similar to `ActiveRecord::AttributeMethods::BeforeTypeCast`:
170
203
  * method `attributes_before_type_cast`
171
204
  * method `read_attribte_before_type_cast`
172
205
  * methods `<name>_before_type_cast`
173
- * Feature: [#303](https://github.com/Dynamoid/dynamoid/pull/303) Add `#update_attributes!` method
174
- * Feature: [#304](https://github.com/Dynamoid/dynamoid/pull/304) Add `inheritance_field` option for `Document.table` method to specify column name for supporting STI and storing class name
175
- * Feature: [#305](https://github.com/Dynamoid/dynamoid/pull/305) Add increment/decrement methods:
206
+ * [#303](https://github.com/Dynamoid/dynamoid/pull/303) Add `#update_attributes!` method
207
+ * [#304](https://github.com/Dynamoid/dynamoid/pull/304) Add `inheritance_field` option for `Document.table` method to specify column name for supporting STI and storing class name
208
+ * [#305](https://github.com/Dynamoid/dynamoid/pull/305) Add increment/decrement methods:
176
209
  * `#increment`
177
210
  * `#increment!`
178
211
  * `#decrement`
179
212
  * `#decrement!`
180
213
  * `.inc`
181
- * Feature: [#307](https://github.com/Dynamoid/dynamoid/pull/307) Allow to declare type of elements in `array`/`set` fields with `of` option. Only scalar types are supported as well as custom types
182
- * Feature: [#312](https://github.com/Dynamoid/dynamoid/pull/312) Add Ability to specify network timeout connection settings (@lulu-ulul)
183
- * Feature: [#313](https://github.com/Dynamoid/dynamoid/pull/313) Add support for backoff in scan and query (@bonty)
184
- * Improvement: [#314](https://github.com/Dynamoid/dynamoid/pull/314) Re-implement `count` for `where`-chain query efficiently. So now `where(...).count` doesn't load all the documents, just statistics
185
-
186
- ## Fixes
187
- * Bug: [#298](https://github.com/Dynamoid/dynamoid/pull/298) Fix `raw` field storing when value is a Hash with non-string keys
188
- * Bug: [#299](https://github.com/Dynamoid/dynamoid/pull/299) Fix `raw` fields - skip empty strings and sets
189
- * Bug: [#309](https://github.com/Dynamoid/dynamoid/pull/309) Fix loading of a document that contains not declared in model class fields
190
- * Bug: [#310](https://github.com/Dynamoid/dynamoid/pull/310) Fix `Adapter#list_tables` method to return names of all tables, not just first page (@knovoselic)
191
- * Bug: [#311](https://github.com/Dynamoid/dynamoid/pull/311) Fix `consistent_read` option of `.find` (@kokuyouwind)
192
- * Bug: [#319](https://github.com/Dynamoid/dynamoid/pull/319) Repair consistent reading for `find_all`
193
- * Bug: [#317](https://github.com/Dynamoid/dynamoid/pull/317) Fix `create_tables` rake task
194
-
195
-
196
-
197
- # 3.0.0
198
-
199
- ## Breaking
200
-
201
- * Maintenance: [#267](https://github.com/Dynamoid/dynamoid/pull/267) Upgrade AWS SDK to V3
202
- * Maintenance: [#268](https://github.com/Dynamoid/dynamoid/pull/268) Drop support of old Ruby versions. Support Ruby since 2.3 version
203
- * Maintenance: [#268](https://github.com/Dynamoid/dynamoid/pull/268) Drop support of old Rails versions. Support Rails since 4.2 version
204
- * Improvement: [#278](https://github.com/Dynamoid/dynamoid/pull/278) Add type casting for finders (`find`, `find_by_id` and `find_all`)
205
- * Improvement: [#279](https://github.com/Dynamoid/dynamoid/pull/279) Change default value of `application_timezone` config option from `:local` to `:utc`
206
- * Feature: [#288](https://github.com/Dynamoid/dynamoid/pull/288) Add `store_boolean_as_native` config option and set it to `true` by default. So all boolean fields are stored not as string `'t'` and `'f'` but as native boolean values now
207
- * Feature: [#289](https://github.com/Dynamoid/dynamoid/pull/289) Add `dynamodb_timezone` config option and set it to `:utc` by default. So now all `date` and `datetime` fields stored in string format will be converted to UTC time zone by default
208
-
209
- ## Improvements
210
-
211
- * Improvement: [#261](https://github.com/Dynamoid/Dynamoid/pull/261) Improve documentation (@walkersumida)
212
- * Improvement: [#264](https://github.com/Dynamoid/Dynamoid/pull/264) Improve documentation (@xbx)
213
- * Improvement: [#278](https://github.com/Dynamoid/Dynamoid/pull/278) Add Rails-like type casting
214
- * Maintenance: [#281](https://github.com/Dynamoid/Dynamoid/pull/281) Deprecate dynamic finders, `find_all`, `find_by_id`, `find_by_composite_key`, `find_all_by_composite_key` and `find_all_by_secondary_index`
215
- * Improvement: [#285](https://github.com/Dynamoid/Dynamoid/pull/285) Set timestamps (`created_at` and `updated_at`) in `upsert`, `update_fields`, `import` and `update` methods
216
- * Improvement: [#286](https://github.com/Dynamoid/Dynamoid/pull/286) Disable scan warning when intentionally loading all items from a collection (@knovoselic)
217
-
218
- ## Fixes
219
-
214
+ * [#307](https://github.com/Dynamoid/dynamoid/pull/307) Allow to declare type of elements in `array`/`set` fields with `of` option. Only scalar types are supported as well as custom types
215
+ * [#312](https://github.com/Dynamoid/dynamoid/pull/312) Add Ability to specify network timeout connection settings (@lulu-ulul)
216
+ * [#313](https://github.com/Dynamoid/dynamoid/pull/313) Add support for backoff in scan and query (@bonty)
217
+
218
+ ### Changed
219
+ * [#314](https://github.com/Dynamoid/dynamoid/pull/314) Re-implement `count` for `where`-chain query efficiently. So now `where(...).count` doesn't load all the documents, just statistics
220
+
221
+ ### Fixed
222
+ * [#298](https://github.com/Dynamoid/dynamoid/pull/298) Fix `raw` field storing when value is a Hash with non-string keys
223
+ * [#299](https://github.com/Dynamoid/dynamoid/pull/299) Fix `raw` fields - skip empty strings and sets
224
+ * [#309](https://github.com/Dynamoid/dynamoid/pull/309) Fix loading of a document that contains not declared in model class fields
225
+ * [#310](https://github.com/Dynamoid/dynamoid/pull/310) Fix `Adapter#list_tables` method to return names of all tables, not just first page (@knovoselic)
226
+ * [#311](https://github.com/Dynamoid/dynamoid/pull/311) Fix `consistent_read` option of `.find` (@kokuyouwind)
227
+ * [#319](https://github.com/Dynamoid/dynamoid/pull/319) Repair consistent reading for `find_all`
228
+ * [#317](https://github.com/Dynamoid/dynamoid/pull/317) Fix `create_tables` rake task
229
+
230
+ ## 3.0.0
231
+ ### Changed
232
+ * BREAKING [#267](https://github.com/Dynamoid/dynamoid/pull/267) Upgrade AWS SDK to V3
233
+ * BREAKING [#268](https://github.com/Dynamoid/dynamoid/pull/268) Drop support of old Ruby versions. Support Ruby since 2.3 version
234
+ * BREAKING [#268](https://github.com/Dynamoid/dynamoid/pull/268) Drop support of old Rails versions. Support Rails since 4.2 version
235
+ * BREAKING [#278](https://github.com/Dynamoid/dynamoid/pull/278) Add type casting for finders (`find`, `find_by_id` and `find_all`)
236
+ * BREAKING [#279](https://github.com/Dynamoid/dynamoid/pull/279) Change default value of `application_timezone` config option from `:local` to `:utc`
237
+ * BREAKING [#288](https://github.com/Dynamoid/dynamoid/pull/288) Add `store_boolean_as_native` config option and set it to `true` by default. So all boolean fields are stored not as string `'t'` and `'f'` but as native boolean values now
238
+ * BREAKING [#289](https://github.com/Dynamoid/dynamoid/pull/289) Add `dynamodb_timezone` config option and set it to `:utc` by default. So now all `date` and `datetime` fields stored in string format will be converted to UTC time zone by default
239
+ * [#261](https://github.com/Dynamoid/Dynamoid/pull/261) Improve documentation (@walkersumida)
240
+ * [#264](https://github.com/Dynamoid/Dynamoid/pull/264) Improve documentation (@xbx)
241
+ * [#278](https://github.com/Dynamoid/Dynamoid/pull/278) Add Rails-like type casting
242
+ * [#281](https://github.com/Dynamoid/Dynamoid/pull/281) Deprecate dynamic finders, `find_all`, `find_by_id`, `find_by_composite_key`, `find_all_by_composite_key` and `find_all_by_secondary_index`
243
+ * [#285](https://github.com/Dynamoid/Dynamoid/pull/285) Set timestamps (`created_at` and `updated_at`) in `upsert`, `update_fields`, `import` and `update` methods
244
+ * [#286](https://github.com/Dynamoid/Dynamoid/pull/286) Disable scan warning when intentionally loading all items from a collection (@knovoselic)
245
+
246
+ ### Fixed
220
247
  * Bug: [#275](https://github.com/Dynamoid/Dynamoid/pull/275) Fix custom type serialization/deserialization
221
248
  * Bug: [#283](https://github.com/Dynamoid/Dynamoid/pull/283) Fix using string formats for partition and sort keys of `date`/`datetime` type
222
249
  * Bug: [#283](https://github.com/Dynamoid/Dynamoid/pull/283) Fix type declaration of custom type fields. Returned by `.dynamoid_field_type` value is treated as Dynamoid's type now
223
250
  * Bug: [#287](https://github.com/Dynamoid/Dynamoid/pull/287) Fix logging disabling (@ghiculescu)
224
251
 
225
- # 2.2.0
226
-
227
- ## Breaking
228
-
229
- * N/A
230
-
231
- ## Improvements
232
-
252
+ ## 2.2.0
253
+ ### Changed
233
254
  * Feature: [#256](https://github.com/Dynamoid/Dynamoid/pull/256) Support Rails 5.2 (@andrykonchin)
234
255
 
235
- ## Fixes
236
-
256
+ ### Fixed
237
257
  * Bug: [#255](https://github.com/Dynamoid/Dynamoid/pull/255) Fix Vagrant RVM configuration and upgrade to Ruby 2.4.1 (@richardhsu)
238
258
 
239
- # 2.1.0
240
-
241
- ## Breaking
242
-
243
- * N/A
244
-
245
- ## Improvements
246
-
259
+ ## 2.1.0
260
+ ### Changed
247
261
  * Feature: [#221](https://github.com/Dynamoid/Dynamoid/pull/221) Add field declaration option `of` to specify the type of `set` elements (@pratik60)
248
262
  * Feature: [#223](https://github.com/Dynamoid/Dynamoid/pull/223) Add field declaration option `store_as_string` to store `datetime` as ISO-8601 formatted strings (@william101)
249
263
  * Feature: [#228](https://github.com/Dynamoid/Dynamoid/pull/228) Add field declaration option `store_as_string` to store `date` as ISO-8601 formatted strings (@andrykonchin)
@@ -256,8 +270,7 @@
256
270
  * added `constant` and `exponential` built-in backoff strategies
257
271
  * `.find_all` and `.import` support new backoff options
258
272
 
259
- ## Fixes
260
-
273
+ ### Fixed
261
274
  * Bug: [#216](https://github.com/Dynamoid/Dynamoid/pull/216) Fix global index detection in queries with conditions other than equal (@andrykonchin)
262
275
  * Bug: [#224](https://github.com/Dynamoid/Dynamoid/pull/224) Fix how `contains` operator works with `set` and `array` field types (@andrykonchin)
263
276
  * Bug: [#225](https://github.com/Dynamoid/Dynamoid/pull/225) Fix equal conditions for `array` fields (@andrykonchin)
@@ -268,82 +281,77 @@
268
281
  * Bug: [#250](https://github.com/Dynamoid/Dynamoid/pull/250) Update outdated warning message about inefficient query and missing indices (@andrykonchin)
269
282
  * Bug: [252](https://github.com/Dynamoid/Dynamoid/pull/252) Don't loose nanoseconds when store DateTime as float number
270
283
 
271
- # 2.0.0
272
-
273
- ## Breaking
274
-
284
+ ## 2.0.0
275
285
  Breaking changes in this release generally bring Dynamoid behavior closer to the Rails-way.
276
286
 
277
- * Change: [#186](https://github.com/Dynamoid/Dynamoid/pull/186) Consistent behavior for `Model.where({}).all` (@andrykonchin)
278
- * <= 1.3.x behaviour -
279
- * load lazily if user specified batch size
280
- * load all collection into memory otherwise
281
- * New behaviour -
282
- * always return lazy evaluated collection
283
- * It means Model.where({}).all returns Enumerator instead of Array.
284
- * If you need Array interface you have to convert collection to Array manually with to_a method call
285
- * Change: [#195](https://github.com/Dynamoid/Dynamoid/pull/195) Failed `#find` returns error (@andrykonchin)
286
- * <= 1.3.x behaviour - find returns nil or smaller array.
287
- * New behaviour - it raises RecordNotFound if one or more records can not be found for the requested ids
288
- * Change: [#196](https://github.com/Dynamoid/Dynamoid/pull/196) Return value of `#save` (@andrykonchin)
289
- * <= 1.3.x behaviour - save returns self if model is saved successfully
290
- * New behaviour - it returns true
291
-
292
- ## Improvements
293
-
294
- * Feature: [#185](https://github.com/Dynamoid/Dynamoid/pull/185) `where`, finders and friends take into account STI (single table inheritance) now (@andrykonchin)
287
+ ### Added
288
+ * [#199](https://github.com/Dynamoid/Dynamoid/pull/199) Added `Document.import` method (@andrykonchin)
289
+ * [#212](https://github.com/Dynamoid/Dynamoid/pull/212) Add foreign_key option (@andrykonchin)
290
+ * [#213](https://github.com/Dynamoid/Dynamoid/pull/213) Support Boolean raw type (@andrykonchin)
291
+
292
+ ### Changed
293
+ * BREAKING [#186](https://github.com/Dynamoid/Dynamoid/pull/186) Consistent behavior for `Model.where({}).all` (@andrykonchin)
294
+ * <= 1.3.x behaviour -
295
+ * load lazily if user specified batch size
296
+ * load all collection into memory otherwise
297
+ * New behaviour -
298
+ * always return lazy evaluated collection
299
+ * It means Model.where({}).all returns Enumerator instead of Array.
300
+ * If you need Array interface you have to convert collection to Array manually with to_a method call
301
+ * BREAKING [#195](https://github.com/Dynamoid/Dynamoid/pull/195) Failed `#find` returns error (@andrykonchin)
302
+ * <= 1.3.x behaviour - find returns nil or smaller array.
303
+ * New behaviour - it raises RecordNotFound if one or more records can not be found for the requested ids
304
+ * BREAKING [#196](https://github.com/Dynamoid/Dynamoid/pull/196) Return value of `#save` (@andrykonchin)
305
+ * <= 1.3.x behaviour - save returns self if model is saved successfully
306
+ * New behaviour - it returns true
307
+ * [#185](https://github.com/Dynamoid/Dynamoid/pull/185) `where`, finders and friends take into account STI (single table inheritance) now (@andrykonchin)
295
308
  * query will return items of the model class and all subclasses
296
- * Feature: [#190](https://github.com/Dynamoid/Dynamoid/pull/190) Allow passing options to range when defining attributes of the document (@richardhsu)
309
+ * [#190](https://github.com/Dynamoid/Dynamoid/pull/190) Allow passing options to range when defining attributes of the document (@richardhsu)
297
310
  * Allows for serialized fields and passing the serializer option.
298
- * Feature: [#198](https://github.com/Dynamoid/Dynamoid/pull/198) Enhanced `#create` and `#create!` to allow multiple document creation like `#import` (@andrykonchin)
311
+ * [#198](https://github.com/Dynamoid/Dynamoid/pull/198) Enhanced `#create` and `#create!` to allow multiple document creation like `#import` (@andrykonchin)
299
312
  * `User.create([{name: 'Josh'}, {name: 'Nick'}])`
300
- * Feature: [#199](https://github.com/Dynamoid/Dynamoid/pull/199) Added `Document.import` method (@andrykonchin)
301
- * Feature: [#205](https://github.com/Dynamoid/Dynamoid/pull/205) Use batch deletion via `batch_write_item` for `delete_all` (@andrykonchin)
302
- * Rename: [#205](https://github.com/Dynamoid/Dynamoid/pull/205) `Chain#destroy_all` as `Chain#delete_all`, to better match Rails conventions when no callbacks are run (@andrykonchin)
313
+ * [#205](https://github.com/Dynamoid/Dynamoid/pull/205) Use batch deletion via `batch_write_item` for `delete_all` (@andrykonchin)
314
+ * [#205](https://github.com/Dynamoid/Dynamoid/pull/205) Rename `Chain#destroy_all` as `Chain#delete_all`, to better match Rails conventions when no callbacks are run (@andrykonchin)
303
315
  * kept the old name as an alias, for backwards compatibility
304
- * Feature: [#207](https://github.com/Dynamoid/Dynamoid/pull/207) Added slicing by 25 requests in #batch_write_item (@andrykonchin)
305
- * Feature: [#211](https://github.com/Dynamoid/Dynamoid/pull/211) Improved Vagrant setup for testing (@richardhsu)
306
- * Feature: [#212](https://github.com/Dynamoid/Dynamoid/pull/212) Add foreign_key option (@andrykonchin)
307
- * Feature: [#213](https://github.com/Dynamoid/Dynamoid/pull/213) Support Boolean raw type (@andrykonchin)
316
+ * [#207](https://github.com/Dynamoid/Dynamoid/pull/207) Added slicing by 25 requests in #batch_write_item (@andrykonchin)
317
+ * [#211](https://github.com/Dynamoid/Dynamoid/pull/211) Improved Vagrant setup for testing (@richardhsu)
308
318
  * Improved Documentation (@pboling, @andrykonchin)
309
319
 
310
- ## Fixes
311
-
312
- * Bug: [#191](https://github.com/Dynamoid/Dynamoid/pull/191), [#192](https://github.com/Dynamoid/Dynamoid/pull/192) Support lambdas as fix for value types were not able to be used as default values (@andrykonchin)(@richardhsu)
313
- * Bug: [#202](https://github.com/Dynamoid/Dynamoid/pull/202) Fix several issues with associations (@andrykonchin)
320
+ ### Fixed
321
+ * [#191](https://github.com/Dynamoid/Dynamoid/pull/191), [#192](https://github.com/Dynamoid/Dynamoid/pull/192) Support lambdas as fix for value types were not able to be used as default values (@andrykonchin)(@richardhsu)
322
+ * [#202](https://github.com/Dynamoid/Dynamoid/pull/202) Fix several issues with associations (@andrykonchin)
314
323
  * setting `nil` value raises an exception
315
324
  * document doesn't keep assigned model and loads it from the storage
316
325
  * delete call doesn't update cached ids of associated models
317
326
  * fix clearing old `has_many` association while add model to new `has_many` association
318
- * Bug: [#204](https://github.com/Dynamoid/Dynamoid/pull/204) Fixed issue where `Document.where(:"id.in" => [])` would do `Query` operation instead of `Scan` (@andrykonchin)
327
+ * [#204](https://github.com/Dynamoid/Dynamoid/pull/204) Fixed issue where `Document.where(:"id.in" => [])` would do `Query` operation instead of `Scan` (@andrykonchin)
319
328
  * Fixed `Chain#key_present?`
320
- * Bug: [#205](https://github.com/Dynamoid/Dynamoid/pull/205) Fixed `delete_all` (@andrykonchin)
329
+ * [#205](https://github.com/Dynamoid/Dynamoid/pull/205) Fixed `delete_all` (@andrykonchin)
321
330
  * Fixed exception when makes scan and sort key is declared in model
322
331
  * Fixed exception when makes scan and any condition is specified in where clause (like Document.where().delete_all)
323
332
  * Fixed exception when makes query and sort key isn't declared in model
324
- * Bug: [#207](https://github.com/Dynamoid/Dynamoid/pull/207) Fixed `#delete` method for case `adapter.delete(table_name, [1, 2, 3], range_key: 1)` (@andrykonchin)
325
-
326
- # 1.3.4
327
-
328
- ## Improvements
333
+ * [#207](https://github.com/Dynamoid/Dynamoid/pull/207) Fixed `#delete` method for case `adapter.delete(table_name, [1, 2, 3], range_key: 1)` (@andrykonchin)
329
334
 
335
+ ## 1.3.4
336
+ ### Added
330
337
  * Added `Chain#last` method (@andrykonchin)
331
338
  * Added `date` field type (@andrykonchin)
332
339
  * Added `application_timezone` config option (@andrykonchin)
333
- * Allow consistent reading for Scan request (@andrykonchin)
334
- * Use Query instead of Scan if there are no conditions for sort (range) key in where clause (@andrykonchin)
335
340
  * Support condition operators for non-key fields for Query request (@andrykonchin)
336
341
  * Support condition operators for Scan request (@andrykonchin)
337
342
  * Support additional operators `in`, `contains`, `not_contains` (@andrykonchin)
338
343
  * Support type casting in `where` clause (@andrykonchin)
339
- * Rename `Chain#eval_limit` to `#record_limit` (@richardhsu)
344
+ * Allow consistent reading for Scan request (@andrykonchin)
340
345
  * Add `Chain#scan_limit` (@richardhsu)
341
346
  * Support batch loading for Query requests (@richardhsu)
342
347
  * Support querying Global/Local Secondary Indices in `where` clause (@richardhsu)
343
- * Only query on GSI if projects all attributes in `where` clause (@richardhsu)
344
348
 
345
- ## Fixes
349
+ ### Changed
350
+ * Use Query instead of Scan if there are no conditions for sort (range) key in where clause (@andrykonchin)
351
+ * Rename `Chain#eval_limit` to `#record_limit` (@richardhsu)
352
+ * Only query on GSI if projects all attributes in `where` clause (@richardhsu)
346
353
 
354
+ ### Fixed
347
355
  * Fix incorrect applying of default field value (#36 and #117, @andrykonchin)
348
356
  * Fix sync table creation/deletion (#160, @mirokuxy)
349
357
  * Allow to override document timestamps (@andrykonchin)
@@ -354,17 +362,16 @@ Breaking changes in this release generally bring Dynamoid behavior closer to the
354
362
  * Fix paginating for Scan requests (@richardhsu)
355
363
  * Fix `batch_get_item` method call for integer partition key (@mudasirraza)
356
364
 
357
- # 1.3.3
358
-
365
+ ## 1.3.3
366
+ ### Added
359
367
  * Allow configuration of the Dynamoid models directory, as not everyone keeps non AR models in app/models
360
368
  - Dynamoid::Config.models_dir = "app/whatever"
361
369
 
362
- # 1.3.2
363
-
370
+ ## 1.3.2
371
+ ### Fixed
364
372
  * Fix migrations by stopping the loading of all rails models outside the rails env.
365
373
 
366
- # 1.3.1
367
-
374
+ ## 1.3.1
368
375
  * Implements #135
369
376
  * dump values for :integer, :string, :boolean fields passed to where query
370
377
  * e.g. You can search for booleans with any of: `[true, false, "t", "f", "true", "false"]`
@@ -377,8 +384,7 @@ Breaking changes in this release generally bring Dynamoid behavior closer to the
377
384
  * Added wwtd and appraisal to spec suite for easier verification of the compatibility matrix
378
385
  * Support is now officially Ruby 2.0+, (including JRuby 9000) and Rails 4.0+
379
386
 
380
- # 1.3.0
381
-
387
+ ## 1.3.0
382
388
  * Fixed specs (@AlexNisnevich & @pboling)
383
389
  * Fix `blank?` and `present?` behavior for single associations (#110, @AlexNisnevich & @bayesimpact)
384
390
  * Support BatchGet for more than 100 items (#80, @getninjas)
@@ -391,8 +397,7 @@ Breaking changes in this release generally bring Dynamoid behavior closer to the
391
397
  * Better support for raw datatype (#104, @OpenGov)
392
398
  * Fix associative tables with non-id primary keys (#86, @everett-wetchler)
393
399
 
394
- # 1.2.1
395
-
400
+ ## 1.2.1
396
401
  * Remove accidental Gemfile.lock; fix .gitignore (#95, @pboling)
397
402
  * Allow options to put_items (#95, @alexperto)
398
403
  * Support range key in secondary index queries (#95, @pboling)
@@ -400,8 +405,7 @@ Breaking changes in this release generally bring Dynamoid behavior closer to the
400
405
  * Support for batch_delete_item API (#95, @pboling)
401
406
  * Support for batch_write_item API (#95, @alexperto)
402
407
 
403
- # 1.2.0
404
-
408
+ ## 1.2.0
405
409
  * Add create_table_syncronously, and sync: option to regular create_table (@pboling)
406
410
  * make required for tables created with secondary indexes
407
411
  * Expose and fix truncate method on adapter (#52, @pcorpet)
@@ -418,13 +422,11 @@ Breaking changes in this release generally bring Dynamoid behavior closer to the
418
422
  * Fix query attribute behavior for booleans (#35, @amirmanji)
419
423
  * Ignore unknown fields on model initialize (PR #33, @sumocoder)
420
424
 
421
- # 1.1.0
422
-
425
+ ## 1.1.0
423
426
  * Added support for optimistic locking on delete (PR #29, @sumocoder)
424
427
  * upgrade concurrent-ruby requirement to 1.0 (PR #31, @keithmgould)
425
428
 
426
- # 1.0.0
427
-
429
+ ## 1.0.0
428
430
  * Add support for AWS SDK v2.
429
431
  * Add support for custom class type for fields.
430
432
  * Remove partitioning support.