dynamoid 3.7.1 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.