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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +246 -244
- data/LICENSE.txt +2 -2
- data/README.md +134 -55
- data/SECURITY.md +17 -0
- data/dynamoid.gemspec +66 -0
- data/lib/dynamoid/adapter.rb +7 -9
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/batch_get_item.rb +2 -2
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/execute_statement.rb +62 -0
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/item_updater.rb +29 -15
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/middleware/limit.rb +3 -0
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3.rb +73 -59
- data/lib/dynamoid/associations/single_association.rb +28 -9
- data/lib/dynamoid/components.rb +2 -3
- data/lib/dynamoid/criteria/chain.rb +13 -9
- data/lib/dynamoid/criteria.rb +6 -7
- data/lib/dynamoid/dirty.rb +60 -63
- data/lib/dynamoid/document.rb +42 -12
- data/lib/dynamoid/errors.rb +2 -0
- data/lib/dynamoid/fields.rb +19 -37
- data/lib/dynamoid/finders.rb +9 -4
- data/lib/dynamoid/indexes.rb +45 -40
- data/lib/dynamoid/loadable.rb +6 -1
- data/lib/dynamoid/log/formatter.rb +19 -4
- data/lib/dynamoid/persistence/import.rb +4 -1
- data/lib/dynamoid/persistence/inc.rb +66 -0
- data/lib/dynamoid/persistence/save.rb +52 -5
- data/lib/dynamoid/persistence/update_fields.rb +1 -1
- data/lib/dynamoid/persistence/update_validations.rb +1 -1
- data/lib/dynamoid/persistence/upsert.rb +1 -1
- data/lib/dynamoid/persistence.rb +149 -61
- data/lib/dynamoid/undumping.rb +18 -0
- data/lib/dynamoid/validations.rb +6 -0
- data/lib/dynamoid/version.rb +1 -1
- data/lib/dynamoid.rb +1 -0
- metadata +30 -50
data/CHANGELOG.md
CHANGED
@@ -1,111 +1,160 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
-
|
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
|
-
|
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
|
-
*
|
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
|
-
|
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
|
-
|
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
|
-
#
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
*
|
79
|
-
*
|
80
|
-
*
|
81
|
-
|
82
|
-
|
83
|
-
*
|
84
|
-
*
|
85
|
-
*
|
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
|
-
##
|
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
|
-
|
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
|
-
|
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
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
*
|
138
|
-
*
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
*
|
143
|
-
*
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
*
|
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
|
-
*
|
174
|
-
*
|
175
|
-
*
|
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
|
-
*
|
182
|
-
*
|
183
|
-
*
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
*
|
190
|
-
*
|
191
|
-
*
|
192
|
-
*
|
193
|
-
*
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
*
|
202
|
-
*
|
203
|
-
*
|
204
|
-
*
|
205
|
-
*
|
206
|
-
*
|
207
|
-
*
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
*
|
212
|
-
|
213
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
*
|
286
|
-
*
|
287
|
-
|
288
|
-
*
|
289
|
-
*
|
290
|
-
*
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
*
|
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
|
-
*
|
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
|
-
*
|
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
|
-
*
|
301
|
-
*
|
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
|
-
*
|
305
|
-
*
|
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
|
-
|
311
|
-
|
312
|
-
*
|
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
|
-
*
|
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
|
-
*
|
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
|
-
*
|
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
|
-
*
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|