dynamoid 3.9.0 → 3.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -6
- data/README.md +202 -25
- data/dynamoid.gemspec +5 -6
- data/lib/dynamoid/adapter.rb +19 -13
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/create_table.rb +2 -2
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/filter_expression_convertor.rb +113 -0
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/item_updater.rb +21 -2
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/projection_expression_convertor.rb +40 -0
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/query.rb +46 -61
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/scan.rb +34 -28
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/transact.rb +31 -0
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3.rb +95 -66
- data/lib/dynamoid/associations/belongs_to.rb +6 -6
- data/lib/dynamoid/associations.rb +1 -1
- data/lib/dynamoid/components.rb +1 -0
- data/lib/dynamoid/config/options.rb +12 -12
- data/lib/dynamoid/config.rb +3 -0
- data/lib/dynamoid/criteria/chain.rb +149 -142
- data/lib/dynamoid/criteria/key_fields_detector.rb +6 -7
- data/lib/dynamoid/criteria/nonexistent_fields_detector.rb +2 -2
- data/lib/dynamoid/criteria/where_conditions.rb +36 -0
- data/lib/dynamoid/dirty.rb +87 -12
- data/lib/dynamoid/document.rb +1 -1
- data/lib/dynamoid/dumping.rb +38 -16
- data/lib/dynamoid/errors.rb +14 -2
- data/lib/dynamoid/fields/declare.rb +6 -6
- data/lib/dynamoid/fields.rb +6 -8
- data/lib/dynamoid/finders.rb +23 -32
- data/lib/dynamoid/indexes.rb +6 -7
- data/lib/dynamoid/loadable.rb +3 -2
- data/lib/dynamoid/persistence/inc.rb +6 -7
- 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 +17 -18
- data/lib/dynamoid/persistence/update_fields.rb +7 -5
- data/lib/dynamoid/persistence/update_validations.rb +1 -1
- data/lib/dynamoid/persistence/upsert.rb +5 -4
- data/lib/dynamoid/persistence.rb +77 -21
- 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 +60 -0
- data/lib/dynamoid/transaction_write/delete_with_primary_key.rb +59 -0
- data/lib/dynamoid/transaction_write/destroy.rb +79 -0
- data/lib/dynamoid/transaction_write/save.rb +164 -0
- data/lib/dynamoid/transaction_write/update_attributes.rb +46 -0
- data/lib/dynamoid/transaction_write/update_fields.rb +102 -0
- data/lib/dynamoid/transaction_write/upsert.rb +96 -0
- data/lib/dynamoid/transaction_write.rb +464 -0
- data/lib/dynamoid/type_casting.rb +18 -15
- data/lib/dynamoid/undumping.rb +14 -3
- data/lib/dynamoid/validations.rb +1 -1
- data/lib/dynamoid/version.rb +1 -1
- data/lib/dynamoid.rb +7 -0
- metadata +30 -16
- data/lib/dynamoid/criteria/ignored_conditions_detector.rb +0 -41
- data/lib/dynamoid/criteria/overwritten_conditions_detector.rb +0 -40
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.11.0
|
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-01-12 00:00:00.000000000 Z
|
25
25
|
dependencies:
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: activemodel
|
@@ -122,33 +122,33 @@ dependencies:
|
|
122
122
|
- !ruby/object:Gem::Version
|
123
123
|
version: '13.0'
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
|
-
name:
|
125
|
+
name: rexml
|
126
126
|
requirement: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
|
-
- - "
|
128
|
+
- - ">="
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
130
|
+
version: '0'
|
131
131
|
type: :development
|
132
132
|
prerelease: false
|
133
133
|
version_requirements: !ruby/object:Gem::Requirement
|
134
134
|
requirements:
|
135
|
-
- - "
|
135
|
+
- - ">="
|
136
136
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
137
|
+
version: '0'
|
138
138
|
- !ruby/object:Gem::Dependency
|
139
|
-
name:
|
139
|
+
name: rspec
|
140
140
|
requirement: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
142
|
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: '
|
144
|
+
version: '3.12'
|
145
145
|
type: :development
|
146
146
|
prerelease: false
|
147
147
|
version_requirements: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
149
|
- - "~>"
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
151
|
+
version: '3.12'
|
152
152
|
- !ruby/object:Gem::Dependency
|
153
153
|
name: yard
|
154
154
|
requirement: !ruby/object:Gem::Requirement
|
@@ -185,13 +185,16 @@ files:
|
|
185
185
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/batch_get_item.rb
|
186
186
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/create_table.rb
|
187
187
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/execute_statement.rb
|
188
|
+
- lib/dynamoid/adapter_plugin/aws_sdk_v3/filter_expression_convertor.rb
|
188
189
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/item_updater.rb
|
189
190
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/middleware/backoff.rb
|
190
191
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/middleware/limit.rb
|
191
192
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/middleware/start_key.rb
|
193
|
+
- lib/dynamoid/adapter_plugin/aws_sdk_v3/projection_expression_convertor.rb
|
192
194
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/query.rb
|
193
195
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/scan.rb
|
194
196
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/table.rb
|
197
|
+
- lib/dynamoid/adapter_plugin/aws_sdk_v3/transact.rb
|
195
198
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/until_past_table_status.rb
|
196
199
|
- lib/dynamoid/application_time_zone.rb
|
197
200
|
- lib/dynamoid/associations.rb
|
@@ -209,10 +212,9 @@ files:
|
|
209
212
|
- lib/dynamoid/config/options.rb
|
210
213
|
- lib/dynamoid/criteria.rb
|
211
214
|
- lib/dynamoid/criteria/chain.rb
|
212
|
-
- lib/dynamoid/criteria/ignored_conditions_detector.rb
|
213
215
|
- lib/dynamoid/criteria/key_fields_detector.rb
|
214
216
|
- lib/dynamoid/criteria/nonexistent_fields_detector.rb
|
215
|
-
- lib/dynamoid/criteria/
|
217
|
+
- lib/dynamoid/criteria/where_conditions.rb
|
216
218
|
- lib/dynamoid/dirty.rb
|
217
219
|
- lib/dynamoid/document.rb
|
218
220
|
- lib/dynamoid/dumping.rb
|
@@ -229,6 +231,8 @@ files:
|
|
229
231
|
- lib/dynamoid/persistence.rb
|
230
232
|
- lib/dynamoid/persistence/import.rb
|
231
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
|
232
236
|
- lib/dynamoid/persistence/save.rb
|
233
237
|
- lib/dynamoid/persistence/update_fields.rb
|
234
238
|
- lib/dynamoid/persistence/update_validations.rb
|
@@ -238,6 +242,16 @@ files:
|
|
238
242
|
- lib/dynamoid/tasks.rb
|
239
243
|
- lib/dynamoid/tasks/database.rake
|
240
244
|
- lib/dynamoid/tasks/database.rb
|
245
|
+
- lib/dynamoid/transaction_write.rb
|
246
|
+
- lib/dynamoid/transaction_write/base.rb
|
247
|
+
- lib/dynamoid/transaction_write/create.rb
|
248
|
+
- lib/dynamoid/transaction_write/delete_with_instance.rb
|
249
|
+
- lib/dynamoid/transaction_write/delete_with_primary_key.rb
|
250
|
+
- lib/dynamoid/transaction_write/destroy.rb
|
251
|
+
- lib/dynamoid/transaction_write/save.rb
|
252
|
+
- lib/dynamoid/transaction_write/update_attributes.rb
|
253
|
+
- lib/dynamoid/transaction_write/update_fields.rb
|
254
|
+
- lib/dynamoid/transaction_write/upsert.rb
|
241
255
|
- lib/dynamoid/type_casting.rb
|
242
256
|
- lib/dynamoid/undumping.rb
|
243
257
|
- lib/dynamoid/validations.rb
|
@@ -247,10 +261,10 @@ licenses:
|
|
247
261
|
- MIT
|
248
262
|
metadata:
|
249
263
|
homepage_uri: http://github.com/Dynamoid/dynamoid
|
250
|
-
source_code_uri: https://github.com/Dynamoid/dynamoid/tree/v3.
|
251
|
-
changelog_uri: https://github.com/Dynamoid/dynamoid/blob/v3.
|
264
|
+
source_code_uri: https://github.com/Dynamoid/dynamoid/tree/v3.11.0
|
265
|
+
changelog_uri: https://github.com/Dynamoid/dynamoid/blob/v3.11.0/CHANGELOG.md
|
252
266
|
bug_tracker_uri: https://github.com/Dynamoid/dynamoid/issues
|
253
|
-
documentation_uri: https://www.rubydoc.info/gems/dynamoid/3.
|
267
|
+
documentation_uri: https://www.rubydoc.info/gems/dynamoid/3.11.0
|
254
268
|
funding_uri: https://opencollective.com/dynamoid
|
255
269
|
wiki_uri: https://github.com/Dynamoid/dynamoid/wiki
|
256
270
|
rubygems_mfa_required: 'true'
|
@@ -269,7 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
269
283
|
- !ruby/object:Gem::Version
|
270
284
|
version: '0'
|
271
285
|
requirements: []
|
272
|
-
rubygems_version: 3.
|
286
|
+
rubygems_version: 3.5.3
|
273
287
|
signing_key:
|
274
288
|
specification_version: 4
|
275
289
|
summary: Dynamoid is an ORM for Amazon's DynamoDB
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Dynamoid
|
4
|
-
module Criteria
|
5
|
-
# @private
|
6
|
-
class IgnoredConditionsDetector
|
7
|
-
def initialize(conditions)
|
8
|
-
@conditions = conditions
|
9
|
-
@ignored_keys = ignored_keys
|
10
|
-
end
|
11
|
-
|
12
|
-
def found?
|
13
|
-
@ignored_keys.present?
|
14
|
-
end
|
15
|
-
|
16
|
-
def warning_message
|
17
|
-
return unless found?
|
18
|
-
|
19
|
-
'Where conditions may contain only one condition for an attribute. ' \
|
20
|
-
"Following conditions are ignored: #{ignored_conditions}"
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def ignored_keys
|
26
|
-
@conditions.keys
|
27
|
-
.group_by(&method(:key_to_field))
|
28
|
-
.select { |_, ary| ary.size > 1 }
|
29
|
-
.flat_map { |_, ary| ary[0..-2] }
|
30
|
-
end
|
31
|
-
|
32
|
-
def key_to_field(key)
|
33
|
-
key.to_s.split('.')[0]
|
34
|
-
end
|
35
|
-
|
36
|
-
def ignored_conditions
|
37
|
-
@conditions.slice(*@ignored_keys)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Dynamoid
|
4
|
-
module Criteria
|
5
|
-
# @private
|
6
|
-
class OverwrittenConditionsDetector
|
7
|
-
def initialize(conditions, conditions_new)
|
8
|
-
@conditions = conditions
|
9
|
-
@new_conditions = conditions_new
|
10
|
-
@overwritten_keys = overwritten_keys
|
11
|
-
end
|
12
|
-
|
13
|
-
def found?
|
14
|
-
@overwritten_keys.present?
|
15
|
-
end
|
16
|
-
|
17
|
-
def warning_message
|
18
|
-
return unless found?
|
19
|
-
|
20
|
-
'Where conditions may contain only one condition for an attribute. ' \
|
21
|
-
"Following conditions are ignored: #{ignored_conditions}"
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def overwritten_keys
|
27
|
-
new_fields = @new_conditions.keys.map(&method(:key_to_field))
|
28
|
-
@conditions.keys.select { |key| key_to_field(key).in?(new_fields) }
|
29
|
-
end
|
30
|
-
|
31
|
-
def key_to_field(key)
|
32
|
-
key.to_s.split('.')[0]
|
33
|
-
end
|
34
|
-
|
35
|
-
def ignored_conditions
|
36
|
-
@conditions.slice(*@overwritten_keys.map(&:to_sym))
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|