dynamoid 3.8.0 → 3.10.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 +54 -3
- data/README.md +111 -60
- data/SECURITY.md +17 -0
- data/dynamoid.gemspec +65 -0
- data/lib/dynamoid/adapter.rb +20 -13
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/create_table.rb +2 -2
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/execute_statement.rb +62 -0
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/filter_expression_convertor.rb +78 -0
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/item_updater.rb +28 -2
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/middleware/limit.rb +3 -0
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/projection_expression_convertor.rb +38 -0
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/query.rb +46 -61
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3/scan.rb +33 -27
- data/lib/dynamoid/adapter_plugin/aws_sdk_v3.rb +116 -70
- data/lib/dynamoid/associations/belongs_to.rb +6 -6
- data/lib/dynamoid/associations.rb +1 -1
- data/lib/dynamoid/components.rb +2 -3
- data/lib/dynamoid/config/options.rb +12 -12
- data/lib/dynamoid/config.rb +1 -0
- data/lib/dynamoid/criteria/chain.rb +101 -138
- 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 +29 -0
- data/lib/dynamoid/dirty.rb +57 -57
- data/lib/dynamoid/document.rb +39 -3
- data/lib/dynamoid/dumping.rb +2 -2
- data/lib/dynamoid/errors.rb +2 -0
- data/lib/dynamoid/fields/declare.rb +6 -6
- data/lib/dynamoid/fields.rb +9 -27
- data/lib/dynamoid/finders.rb +26 -30
- data/lib/dynamoid/indexes.rb +7 -10
- data/lib/dynamoid/loadable.rb +2 -2
- 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 +55 -12
- data/lib/dynamoid/persistence/update_fields.rb +2 -2
- data/lib/dynamoid/persistence/update_validations.rb +2 -2
- data/lib/dynamoid/persistence.rb +128 -48
- data/lib/dynamoid/type_casting.rb +15 -14
- data/lib/dynamoid/undumping.rb +1 -1
- data/lib/dynamoid/version.rb +1 -1
- metadata +27 -49
- 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.10.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: 2024-02-10 00:00:00.000000000 Z
|
25
25
|
dependencies:
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: activemodel
|
@@ -93,64 +93,36 @@ dependencies:
|
|
93
93
|
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
|
-
- !ruby/object:Gem::Dependency
|
97
|
-
name: coveralls
|
98
|
-
requirement: !ruby/object:Gem::Requirement
|
99
|
-
requirements:
|
100
|
-
- - ">="
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '0'
|
103
|
-
type: :development
|
104
|
-
prerelease: false
|
105
|
-
version_requirements: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - ">="
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: overcommit
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
requirements:
|
114
|
-
- - ">="
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: '0'
|
117
|
-
type: :development
|
118
|
-
prerelease: false
|
119
|
-
version_requirements: !ruby/object:Gem::Requirement
|
120
|
-
requirements:
|
121
|
-
- - ">="
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: '0'
|
124
96
|
- !ruby/object:Gem::Dependency
|
125
97
|
name: pry
|
126
98
|
requirement: !ruby/object:Gem::Requirement
|
127
99
|
requirements:
|
128
100
|
- - "~>"
|
129
101
|
- !ruby/object:Gem::Version
|
130
|
-
version: 0.
|
102
|
+
version: '0.14'
|
131
103
|
type: :development
|
132
104
|
prerelease: false
|
133
105
|
version_requirements: !ruby/object:Gem::Requirement
|
134
106
|
requirements:
|
135
107
|
- - "~>"
|
136
108
|
- !ruby/object:Gem::Version
|
137
|
-
version: 0.
|
109
|
+
version: '0.14'
|
138
110
|
- !ruby/object:Gem::Dependency
|
139
111
|
name: rake
|
140
112
|
requirement: !ruby/object:Gem::Requirement
|
141
113
|
requirements:
|
142
|
-
- - "
|
114
|
+
- - "~>"
|
143
115
|
- !ruby/object:Gem::Version
|
144
|
-
version: '0'
|
116
|
+
version: '13.0'
|
145
117
|
type: :development
|
146
118
|
prerelease: false
|
147
119
|
version_requirements: !ruby/object:Gem::Requirement
|
148
120
|
requirements:
|
149
|
-
- - "
|
121
|
+
- - "~>"
|
150
122
|
- !ruby/object:Gem::Version
|
151
|
-
version: '0'
|
123
|
+
version: '13.0'
|
152
124
|
- !ruby/object:Gem::Dependency
|
153
|
-
name:
|
125
|
+
name: rexml
|
154
126
|
requirement: !ruby/object:Gem::Requirement
|
155
127
|
requirements:
|
156
128
|
- - ">="
|
@@ -164,19 +136,19 @@ dependencies:
|
|
164
136
|
- !ruby/object:Gem::Version
|
165
137
|
version: '0'
|
166
138
|
- !ruby/object:Gem::Dependency
|
167
|
-
name:
|
139
|
+
name: rspec
|
168
140
|
requirement: !ruby/object:Gem::Requirement
|
169
141
|
requirements:
|
170
|
-
- -
|
142
|
+
- - "~>"
|
171
143
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
144
|
+
version: '3.12'
|
173
145
|
type: :development
|
174
146
|
prerelease: false
|
175
147
|
version_requirements: !ruby/object:Gem::Requirement
|
176
148
|
requirements:
|
177
|
-
- -
|
149
|
+
- - "~>"
|
178
150
|
- !ruby/object:Gem::Version
|
179
|
-
version:
|
151
|
+
version: '3.12'
|
180
152
|
- !ruby/object:Gem::Dependency
|
181
153
|
name: yard
|
182
154
|
requirement: !ruby/object:Gem::Requirement
|
@@ -195,9 +167,9 @@ description: Dynamoid is an ORM for Amazon's DynamoDB that supports offline deve
|
|
195
167
|
associations, querying, and everything else you'd expect from an ActiveRecord-style
|
196
168
|
replacement.
|
197
169
|
email:
|
170
|
+
- andry.konchin@gmail.com
|
198
171
|
- peter.boling@gmail.com
|
199
172
|
- brian@stellaservice.com
|
200
|
-
- andry.konchin@gmail.com
|
201
173
|
executables: []
|
202
174
|
extensions: []
|
203
175
|
extra_rdoc_files: []
|
@@ -205,15 +177,20 @@ files:
|
|
205
177
|
- CHANGELOG.md
|
206
178
|
- LICENSE.txt
|
207
179
|
- README.md
|
180
|
+
- SECURITY.md
|
181
|
+
- dynamoid.gemspec
|
208
182
|
- lib/dynamoid.rb
|
209
183
|
- lib/dynamoid/adapter.rb
|
210
184
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3.rb
|
211
185
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/batch_get_item.rb
|
212
186
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/create_table.rb
|
187
|
+
- lib/dynamoid/adapter_plugin/aws_sdk_v3/execute_statement.rb
|
188
|
+
- lib/dynamoid/adapter_plugin/aws_sdk_v3/filter_expression_convertor.rb
|
213
189
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/item_updater.rb
|
214
190
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/middleware/backoff.rb
|
215
191
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/middleware/limit.rb
|
216
192
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/middleware/start_key.rb
|
193
|
+
- lib/dynamoid/adapter_plugin/aws_sdk_v3/projection_expression_convertor.rb
|
217
194
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/query.rb
|
218
195
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/scan.rb
|
219
196
|
- lib/dynamoid/adapter_plugin/aws_sdk_v3/table.rb
|
@@ -234,10 +211,9 @@ files:
|
|
234
211
|
- lib/dynamoid/config/options.rb
|
235
212
|
- lib/dynamoid/criteria.rb
|
236
213
|
- lib/dynamoid/criteria/chain.rb
|
237
|
-
- lib/dynamoid/criteria/ignored_conditions_detector.rb
|
238
214
|
- lib/dynamoid/criteria/key_fields_detector.rb
|
239
215
|
- lib/dynamoid/criteria/nonexistent_fields_detector.rb
|
240
|
-
- lib/dynamoid/criteria/
|
216
|
+
- lib/dynamoid/criteria/where_conditions.rb
|
241
217
|
- lib/dynamoid/dirty.rb
|
242
218
|
- lib/dynamoid/document.rb
|
243
219
|
- lib/dynamoid/dumping.rb
|
@@ -253,6 +229,7 @@ files:
|
|
253
229
|
- lib/dynamoid/middleware/identity_map.rb
|
254
230
|
- lib/dynamoid/persistence.rb
|
255
231
|
- lib/dynamoid/persistence/import.rb
|
232
|
+
- lib/dynamoid/persistence/inc.rb
|
256
233
|
- lib/dynamoid/persistence/save.rb
|
257
234
|
- lib/dynamoid/persistence/update_fields.rb
|
258
235
|
- lib/dynamoid/persistence/update_validations.rb
|
@@ -271,10 +248,11 @@ licenses:
|
|
271
248
|
- MIT
|
272
249
|
metadata:
|
273
250
|
homepage_uri: http://github.com/Dynamoid/dynamoid
|
274
|
-
source_code_uri: https://github.com/Dynamoid/dynamoid/tree/v3.
|
275
|
-
changelog_uri: https://github.com/Dynamoid/dynamoid/blob/v3.
|
251
|
+
source_code_uri: https://github.com/Dynamoid/dynamoid/tree/v3.10.0
|
252
|
+
changelog_uri: https://github.com/Dynamoid/dynamoid/blob/v3.10.0/CHANGELOG.md
|
276
253
|
bug_tracker_uri: https://github.com/Dynamoid/dynamoid/issues
|
277
|
-
documentation_uri: https://www.rubydoc.info/gems/dynamoid/3.
|
254
|
+
documentation_uri: https://www.rubydoc.info/gems/dynamoid/3.10.0
|
255
|
+
funding_uri: https://opencollective.com/dynamoid
|
278
256
|
wiki_uri: https://github.com/Dynamoid/dynamoid/wiki
|
279
257
|
rubygems_mfa_required: 'true'
|
280
258
|
post_install_message:
|
@@ -292,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
292
270
|
- !ruby/object:Gem::Version
|
293
271
|
version: '0'
|
294
272
|
requirements: []
|
295
|
-
rubygems_version: 3.
|
273
|
+
rubygems_version: 3.5.3
|
296
274
|
signing_key:
|
297
275
|
specification_version: 4
|
298
276
|
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
|