dynamoid 3.10.0 → 3.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +37 -1
- data/README.md +268 -8
- data/dynamoid.gemspec +4 -4
- data/lib/dynamoid/adapter.rb +1 -1
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/filter_expression_convertor.rb +53 -18
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/item_updater.rb +5 -4
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/projection_expression_convertor.rb +9 -7
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/query.rb +1 -1
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/scan.rb +1 -1
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/transact.rb +31 -0
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3.rb +17 -5
- data/lib/dynamoid/components.rb +1 -0
- data/lib/dynamoid/config.rb +3 -0
- data/lib/dynamoid/criteria/chain.rb +74 -21
- data/lib/dynamoid/criteria/where_conditions.rb +13 -6
- data/lib/dynamoid/dirty.rb +97 -11
- data/lib/dynamoid/dumping.rb +39 -17
- data/lib/dynamoid/errors.rb +30 -3
- data/lib/dynamoid/fields.rb +13 -3
- data/lib/dynamoid/finders.rb +44 -23
- data/lib/dynamoid/loadable.rb +1 -0
- data/lib/dynamoid/persistence/inc.rb +35 -19
- data/lib/dynamoid/persistence/item_updater_with_casting_and_dumping.rb +36 -0
- data/lib/dynamoid/persistence/item_updater_with_dumping.rb +33 -0
- data/lib/dynamoid/persistence/save.rb +29 -14
- data/lib/dynamoid/persistence/update_fields.rb +23 -8
- data/lib/dynamoid/persistence/update_validations.rb +3 -3
- data/lib/dynamoid/persistence/upsert.rb +22 -8
- data/lib/dynamoid/persistence.rb +184 -28
- data/lib/dynamoid/transaction_read/find.rb +137 -0
- data/lib/dynamoid/transaction_read.rb +146 -0
- data/lib/dynamoid/transaction_write/base.rb +47 -0
- data/lib/dynamoid/transaction_write/create.rb +49 -0
- data/lib/dynamoid/transaction_write/delete_with_instance.rb +65 -0
- data/lib/dynamoid/transaction_write/delete_with_primary_key.rb +64 -0
- data/lib/dynamoid/transaction_write/destroy.rb +84 -0
- data/lib/dynamoid/transaction_write/item_updater.rb +55 -0
- data/lib/dynamoid/transaction_write/save.rb +169 -0
- data/lib/dynamoid/transaction_write/update_attributes.rb +46 -0
- data/lib/dynamoid/transaction_write/update_fields.rb +239 -0
- data/lib/dynamoid/transaction_write/upsert.rb +106 -0
- data/lib/dynamoid/transaction_write.rb +673 -0
- data/lib/dynamoid/type_casting.rb +3 -1
- data/lib/dynamoid/undumping.rb +13 -2
- data/lib/dynamoid/validations.rb +8 -5
- data/lib/dynamoid/version.rb +1 -1
- data/lib/dynamoid.rb +8 -0
- metadata +21 -5
data/lib/dynamoid/undumping.rb
CHANGED
@@ -238,7 +238,8 @@ module Dynamoid
|
|
238
238
|
class SerializedUndumper < Base
|
239
239
|
# We must use YAML.safe_load in Ruby 3.1 to handle serialized Set class
|
240
240
|
minimum_ruby_version = ->(version) { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new(version) }
|
241
|
-
|
241
|
+
|
242
|
+
# Once we drop support for Rubies older than 2.6 we can remove this condition (with major version bump)!
|
242
243
|
# YAML_SAFE_LOAD = minimum_ruby_version.call("2.6")
|
243
244
|
# But we don't want to change behavior for Ruby <= 3.0 that has been using the gem, without a major version bump
|
244
245
|
YAML_SAFE_LOAD = minimum_ruby_version.call('3.1')
|
@@ -284,7 +285,17 @@ module Dynamoid
|
|
284
285
|
|
285
286
|
class BinaryUndumper < Base
|
286
287
|
def process(value)
|
287
|
-
|
288
|
+
store_as_binary = if @options[:store_as_native_binary].nil?
|
289
|
+
Dynamoid.config.store_binary_as_native
|
290
|
+
else
|
291
|
+
@options[:store_as_native_binary]
|
292
|
+
end
|
293
|
+
|
294
|
+
if store_as_binary
|
295
|
+
value.string # expect StringIO here
|
296
|
+
else
|
297
|
+
Base64.strict_decode64(value)
|
298
|
+
end
|
288
299
|
end
|
289
300
|
end
|
290
301
|
|
data/lib/dynamoid/validations.rb
CHANGED
@@ -24,24 +24,27 @@ module Dynamoid
|
|
24
24
|
# @since 0.2.0
|
25
25
|
def valid?(context = nil)
|
26
26
|
context ||= (new_record? ? :create : :update)
|
27
|
-
super
|
27
|
+
super
|
28
28
|
end
|
29
29
|
|
30
30
|
# Raise an error unless this object is valid.
|
31
31
|
#
|
32
32
|
# @private
|
33
33
|
# @since 0.2.0
|
34
|
-
def save!
|
35
|
-
|
34
|
+
def save!(options = {})
|
35
|
+
unless valid?
|
36
|
+
raise Dynamoid::Errors::DocumentNotValid, self
|
37
|
+
end
|
36
38
|
|
37
|
-
|
38
|
-
self
|
39
|
+
super
|
39
40
|
end
|
40
41
|
|
41
42
|
def update_attribute(attribute, value)
|
42
43
|
write_attribute(attribute, value)
|
43
44
|
save(validate: false)
|
44
45
|
self
|
46
|
+
rescue Dynamoid::Errors::StaleObjectError
|
47
|
+
self
|
45
48
|
end
|
46
49
|
|
47
50
|
module ClassMethods
|
data/lib/dynamoid/version.rb
CHANGED
data/lib/dynamoid.rb
CHANGED
@@ -35,6 +35,8 @@ require 'dynamoid/loadable'
|
|
35
35
|
require 'dynamoid/components'
|
36
36
|
require 'dynamoid/document'
|
37
37
|
require 'dynamoid/adapter'
|
38
|
+
require 'dynamoid/transaction_read'
|
39
|
+
require 'dynamoid/transaction_write'
|
38
40
|
|
39
41
|
require 'dynamoid/tasks/database'
|
40
42
|
|
@@ -62,4 +64,10 @@ module Dynamoid
|
|
62
64
|
def adapter
|
63
65
|
@adapter ||= Adapter.new
|
64
66
|
end
|
67
|
+
|
68
|
+
# @private
|
69
|
+
def deprecator
|
70
|
+
# all the deprecated behavior will be removed in the next major version
|
71
|
+
@deprecator ||= ActiveSupport::Deprecation.new('4.0', 'Dynamoid')
|
72
|
+
end
|
65
73
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynamoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Symonds
|
@@ -21,7 +21,7 @@ authors:
|
|
21
21
|
autorequire:
|
22
22
|
bindir: bin
|
23
23
|
cert_chain: []
|
24
|
-
date:
|
24
|
+
date: 2025-08-23 00:00:00.000000000 Z
|
25
25
|
dependencies:
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: activemodel
|
@@ -194,6 +194,7 @@ files:
|
|
194
194
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/query.rb
|
195
195
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/scan.rb
|
196
196
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/table.rb
|
197
|
+
- lib/dynamoid/adapter_plugin/aws_sdk_v3/transact.rb
|
197
198
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/until_past_table_status.rb
|
198
199
|
- lib/dynamoid/application_time_zone.rb
|
199
200
|
- lib/dynamoid/associations.rb
|
@@ -230,6 +231,8 @@ files:
|
|
230
231
|
- lib/dynamoid/persistence.rb
|
231
232
|
- lib/dynamoid/persistence/import.rb
|
232
233
|
- lib/dynamoid/persistence/inc.rb
|
234
|
+
- lib/dynamoid/persistence/item_updater_with_casting_and_dumping.rb
|
235
|
+
- lib/dynamoid/persistence/item_updater_with_dumping.rb
|
233
236
|
- lib/dynamoid/persistence/save.rb
|
234
237
|
- lib/dynamoid/persistence/update_fields.rb
|
235
238
|
- lib/dynamoid/persistence/update_validations.rb
|
@@ -239,6 +242,19 @@ files:
|
|
239
242
|
- lib/dynamoid/tasks.rb
|
240
243
|
- lib/dynamoid/tasks/database.rake
|
241
244
|
- lib/dynamoid/tasks/database.rb
|
245
|
+
- lib/dynamoid/transaction_read.rb
|
246
|
+
- lib/dynamoid/transaction_read/find.rb
|
247
|
+
- lib/dynamoid/transaction_write.rb
|
248
|
+
- lib/dynamoid/transaction_write/base.rb
|
249
|
+
- lib/dynamoid/transaction_write/create.rb
|
250
|
+
- lib/dynamoid/transaction_write/delete_with_instance.rb
|
251
|
+
- lib/dynamoid/transaction_write/delete_with_primary_key.rb
|
252
|
+
- lib/dynamoid/transaction_write/destroy.rb
|
253
|
+
- lib/dynamoid/transaction_write/item_updater.rb
|
254
|
+
- lib/dynamoid/transaction_write/save.rb
|
255
|
+
- lib/dynamoid/transaction_write/update_attributes.rb
|
256
|
+
- lib/dynamoid/transaction_write/update_fields.rb
|
257
|
+
- lib/dynamoid/transaction_write/upsert.rb
|
242
258
|
- lib/dynamoid/type_casting.rb
|
243
259
|
- lib/dynamoid/undumping.rb
|
244
260
|
- lib/dynamoid/validations.rb
|
@@ -248,10 +264,10 @@ licenses:
|
|
248
264
|
- MIT
|
249
265
|
metadata:
|
250
266
|
homepage_uri: http://github.com/Dynamoid/dynamoid
|
251
|
-
source_code_uri: https://github.com/Dynamoid/dynamoid/tree/v3.
|
252
|
-
changelog_uri: https://github.com/Dynamoid/dynamoid/blob/v3.
|
267
|
+
source_code_uri: https://github.com/Dynamoid/dynamoid/tree/v3.12.1
|
268
|
+
changelog_uri: https://github.com/Dynamoid/dynamoid/blob/v3.12.1/CHANGELOG.md
|
253
269
|
bug_tracker_uri: https://github.com/Dynamoid/dynamoid/issues
|
254
|
-
documentation_uri: https://www.rubydoc.info/gems/dynamoid/3.
|
270
|
+
documentation_uri: https://www.rubydoc.info/gems/dynamoid/3.12.1
|
255
271
|
funding_uri: https://opencollective.com/dynamoid
|
256
272
|
wiki_uri: https://github.com/Dynamoid/dynamoid/wiki
|
257
273
|
rubygems_mfa_required: 'true'
|