rom-core 5.1.2 → 5.2.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/lib/rom/array_dataset.rb +4 -4
- data/lib/rom/association_set.rb +2 -3
- data/lib/rom/associations/definitions/abstract.rb +2 -2
- data/lib/rom/associations/many_to_many.rb +1 -0
- data/lib/rom/attribute.rb +5 -4
- data/lib/rom/auto_curry.rb +2 -0
- data/lib/rom/command.rb +6 -6
- data/lib/rom/command_compiler.rb +5 -7
- data/lib/rom/commands/class_interface.rb +7 -7
- data/lib/rom/commands/composite.rb +1 -1
- data/lib/rom/commands/graph/input_evaluator.rb +1 -1
- data/lib/rom/commands/lazy.rb +2 -1
- data/lib/rom/commands/lazy/create.rb +1 -1
- data/lib/rom/commands/lazy/update.rb +3 -3
- data/lib/rom/configuration.rb +5 -5
- data/lib/rom/configuration_dsl/relation.rb +1 -1
- data/lib/rom/constants.rb +1 -1
- data/lib/rom/core/version.rb +1 -1
- data/lib/rom/data_proxy.rb +3 -2
- data/lib/rom/enumerable_dataset.rb +4 -4
- data/lib/rom/environment.rb +0 -1
- data/lib/rom/header/attribute.rb +2 -4
- data/lib/rom/initializer.rb +9 -7
- data/lib/rom/lint/gateway.rb +1 -3
- data/lib/rom/lint/linter.rb +3 -4
- data/lib/rom/lint/spec.rb +2 -2
- data/lib/rom/mapper.rb +4 -3
- data/lib/rom/mapper/attribute_dsl.rb +5 -5
- data/lib/rom/mapper/dsl.rb +2 -5
- data/lib/rom/mapper/model_dsl.rb +2 -1
- data/lib/rom/mapper_compiler.rb +2 -1
- data/lib/rom/mapper_registry.rb +3 -3
- data/lib/rom/memory/dataset.rb +4 -3
- data/lib/rom/pipeline.rb +3 -1
- data/lib/rom/plugin.rb +3 -3
- data/lib/rom/plugin_registry.rb +1 -1
- data/lib/rom/plugins/command/schema.rb +2 -2
- data/lib/rom/plugins/relation/instrumentation.rb +1 -1
- data/lib/rom/plugins/relation/registry_reader.rb +4 -3
- data/lib/rom/plugins/schema/timestamps.rb +4 -6
- data/lib/rom/processor.rb +1 -1
- data/lib/rom/processor/transproc.rb +16 -19
- data/lib/rom/registry.rb +17 -12
- data/lib/rom/relation.rb +6 -6
- data/lib/rom/relation/class_interface.rb +9 -8
- data/lib/rom/relation/curried.rb +3 -2
- data/lib/rom/relation/loaded.rb +1 -0
- data/lib/rom/relation/materializable.rb +1 -0
- data/lib/rom/relation/name.rb +1 -1
- data/lib/rom/relation_registry.rb +1 -1
- data/lib/rom/schema.rb +22 -22
- data/lib/rom/schema/associations_dsl.rb +17 -17
- data/lib/rom/schema/dsl.rb +6 -6
- data/lib/rom/schema/inferrer.rb +2 -4
- data/lib/rom/setup.rb +2 -2
- data/lib/rom/setup/auto_registration.rb +1 -1
- data/lib/rom/setup/auto_registration_strategies/base.rb +1 -1
- data/lib/rom/setup/auto_registration_strategies/custom_namespace.rb +4 -4
- data/lib/rom/setup/auto_registration_strategies/no_namespace.rb +1 -1
- data/lib/rom/setup/auto_registration_strategies/with_namespace.rb +1 -1
- data/lib/rom/setup/finalize/finalize_commands.rb +7 -4
- data/lib/rom/setup/finalize/finalize_mappers.rb +9 -8
- data/lib/rom/setup/finalize/finalize_relations.rb +2 -2
- data/lib/rom/struct.rb +1 -1
- data/lib/rom/struct_compiler.rb +6 -5
- data/lib/rom/support/memoizable.rb +3 -2
- data/lib/rom/transaction.rb +1 -1
- data/lib/rom/transformer.rb +1 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 210baca2c0408ebc0debfb706045e5d10c287bf25005f5fef6456a034f371be9
|
4
|
+
data.tar.gz: 2a6f63a627bdc874a696e40d164f8ba394c514abe3afe3ed2a7f704c705ebc3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 192dc8383ec5e6c2b4f98658d36417fa0e22a1a1c93f08e50c915a4410abd6a4edf70227f3db604c3e8a516fc2e54114eb407fb852bb2e42bcb423b4fd42aa04
|
7
|
+
data.tar.gz: 93703fe2e0474b5eb9052d4f9a0ad13d434e30180486bb9835898454959ee2b71dbc6f7d893df96f85ac70f78f4bf228576fbf9fe200f1295bc4b67ec1f8d560
|
data/lib/rom/array_dataset.rb
CHANGED
@@ -31,14 +31,14 @@ module ROM
|
|
31
31
|
:slice, :slice!, :sort!, :uniq, :uniq!, :unshift, :values_at
|
32
32
|
)
|
33
33
|
|
34
|
-
[
|
35
|
-
|
36
|
-
|
34
|
+
%i[
|
35
|
+
map! combination cycle delete_if keep_if permutation reject!
|
36
|
+
select! sort_by!
|
37
37
|
].each do |method|
|
38
38
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
39
39
|
def #{method}(*args, &block)
|
40
40
|
return to_enum unless block
|
41
|
-
self.class.new(data.send(:#{method}, *args, &block), options)
|
41
|
+
self.class.new(data.send(:#{method}, *args, &block), **options)
|
42
42
|
end
|
43
43
|
RUBY
|
44
44
|
end
|
data/lib/rom/association_set.rb
CHANGED
@@ -12,10 +12,9 @@ module ROM
|
|
12
12
|
def initialize(*)
|
13
13
|
super
|
14
14
|
elements.values.each do |assoc|
|
15
|
-
if assoc.aliased? && !key?(assoc.name)
|
16
|
-
elements[assoc.name] = assoc
|
17
|
-
end
|
15
|
+
elements[assoc.name] = assoc if assoc.aliased? && !key?(assoc.name)
|
18
16
|
end
|
19
17
|
end
|
18
|
+
ruby2_keywords(:initialize) if respond_to?(:ruby2_keywords, true)
|
20
19
|
end
|
21
20
|
end
|
@@ -73,12 +73,12 @@ module ROM
|
|
73
73
|
# @option opts [TrueClass,FalseClass] :override Whether provided :view should override association's default view
|
74
74
|
#
|
75
75
|
# @api public
|
76
|
-
def self.new(source, target, opts
|
76
|
+
def self.new(source, target, **opts)
|
77
77
|
source_name = Relation::Name[source]
|
78
78
|
target_name = resolve_target_name(target, opts)
|
79
79
|
options = process_options(target_name, Hash[opts])
|
80
80
|
|
81
|
-
super(source_name, target_name, options)
|
81
|
+
super(source_name, target_name, **options)
|
82
82
|
end
|
83
83
|
|
84
84
|
# @api private
|
data/lib/rom/attribute.rb
CHANGED
@@ -304,7 +304,7 @@ module ROM
|
|
304
304
|
# @api public
|
305
305
|
def meta(opts = nil)
|
306
306
|
if opts
|
307
|
-
self.class.new(type.meta(opts), options)
|
307
|
+
self.class.new(type.meta(opts), **options)
|
308
308
|
else
|
309
309
|
type.meta
|
310
310
|
end
|
@@ -340,7 +340,7 @@ module ROM
|
|
340
340
|
#
|
341
341
|
# @api private
|
342
342
|
def read?
|
343
|
-
!
|
343
|
+
!meta[:read].nil?
|
344
344
|
end
|
345
345
|
|
346
346
|
# Return read type
|
@@ -367,7 +367,7 @@ module ROM
|
|
367
367
|
#
|
368
368
|
# @api public
|
369
369
|
def optional
|
370
|
-
sum = self.class.new(super, options)
|
370
|
+
sum = self.class.new(super, **options)
|
371
371
|
read? ? sum.meta(read: meta[:read].optional) : sum
|
372
372
|
end
|
373
373
|
|
@@ -412,7 +412,7 @@ module ROM
|
|
412
412
|
response = type.__send__(meth, *args, &block)
|
413
413
|
|
414
414
|
if response.is_a?(type.class)
|
415
|
-
self.class.new(response, options)
|
415
|
+
self.class.new(response, **options)
|
416
416
|
else
|
417
417
|
response
|
418
418
|
end
|
@@ -420,5 +420,6 @@ module ROM
|
|
420
420
|
super
|
421
421
|
end
|
422
422
|
end
|
423
|
+
ruby2_keywords(:method_missing) if respond_to?(:ruby2_keywords, true)
|
423
424
|
end
|
424
425
|
end
|
data/lib/rom/auto_curry.rb
CHANGED
@@ -8,6 +8,7 @@ module ROM
|
|
8
8
|
def self.extended(klass)
|
9
9
|
klass.define_singleton_method(:method_added) do |name|
|
10
10
|
return if auto_curry_busy?
|
11
|
+
|
11
12
|
auto_curry_guard { auto_curry(name) }
|
12
13
|
super(name)
|
13
14
|
end
|
@@ -58,6 +59,7 @@ module ROM
|
|
58
59
|
response
|
59
60
|
end
|
60
61
|
end
|
62
|
+
ruby2_keywords(name) if respond_to?(:ruby2_keywords, true)
|
61
63
|
end
|
62
64
|
|
63
65
|
auto_curried_methods << name
|
data/lib/rom/command.rb
CHANGED
@@ -280,7 +280,7 @@ module ROM
|
|
280
280
|
result = prepared ? execute(prepared, &block) : execute(&block)
|
281
281
|
|
282
282
|
if curried?
|
283
|
-
if args.
|
283
|
+
if !args.empty?
|
284
284
|
apply_hooks(after_hooks, result, *args)
|
285
285
|
elsif curry_args.size > 1
|
286
286
|
apply_hooks(after_hooks, result, curry_args[1])
|
@@ -288,7 +288,7 @@ module ROM
|
|
288
288
|
apply_hooks(after_hooks, result)
|
289
289
|
end
|
290
290
|
else
|
291
|
-
apply_hooks(after_hooks, result, *args[1..args.size-1])
|
291
|
+
apply_hooks(after_hooks, result, *args[1..args.size - 1])
|
292
292
|
end
|
293
293
|
else
|
294
294
|
execute(*(curry_args + args), &block)
|
@@ -314,7 +314,7 @@ module ROM
|
|
314
314
|
if curry_args.empty? && args.first.is_a?(Graph::InputEvaluator)
|
315
315
|
Lazy[self].new(self, *args)
|
316
316
|
else
|
317
|
-
self.class.build(relation,
|
317
|
+
self.class.build(relation, **options, curry_args: args)
|
318
318
|
end
|
319
319
|
end
|
320
320
|
|
@@ -335,7 +335,7 @@ module ROM
|
|
335
335
|
#
|
336
336
|
# @api public
|
337
337
|
def curried?
|
338
|
-
curry_args.
|
338
|
+
!curry_args.empty?
|
339
339
|
end
|
340
340
|
|
341
341
|
# Return a new command with appended before hooks
|
@@ -386,14 +386,14 @@ module ROM
|
|
386
386
|
#
|
387
387
|
# @api public
|
388
388
|
def new(new_relation)
|
389
|
-
self.class.build(new_relation,
|
389
|
+
self.class.build(new_relation, **options, source: relation)
|
390
390
|
end
|
391
391
|
|
392
392
|
# Check if this command has any hooks
|
393
393
|
#
|
394
394
|
# @api private
|
395
395
|
def hooks?
|
396
|
-
before_hooks.
|
396
|
+
!before_hooks.empty? || !after_hooks.empty?
|
397
397
|
end
|
398
398
|
|
399
399
|
# Check if this command is lazy
|
data/lib/rom/command_compiler.rb
CHANGED
@@ -157,7 +157,7 @@ module ROM
|
|
157
157
|
default_mapping
|
158
158
|
end
|
159
159
|
|
160
|
-
if other.
|
160
|
+
if !other.empty?
|
161
161
|
[mapping, [type, other]]
|
162
162
|
else
|
163
163
|
[mapping, type]
|
@@ -169,7 +169,7 @@ module ROM
|
|
169
169
|
end
|
170
170
|
|
171
171
|
# @api private
|
172
|
-
def visit_attribute(*
|
172
|
+
def visit_attribute(*_args)
|
173
173
|
nil
|
174
174
|
end
|
175
175
|
|
@@ -199,13 +199,11 @@ module ROM
|
|
199
199
|
klass.public_send(name, value)
|
200
200
|
end
|
201
201
|
|
202
|
-
if rel_meta[:combine_type]
|
203
|
-
setup_associates(klass, relation, rel_meta, parent_relation)
|
204
|
-
end
|
202
|
+
setup_associates(klass, relation, rel_meta, parent_relation) if rel_meta[:combine_type]
|
205
203
|
|
206
204
|
plugins.each do |plugin|
|
207
205
|
plugin_options = plugins_options.fetch(plugin) { EMPTY_HASH }
|
208
|
-
klass.use(plugin, plugin_options)
|
206
|
+
klass.use(plugin, **plugin_options)
|
209
207
|
end
|
210
208
|
|
211
209
|
gateway = gateways[relation.gateway]
|
@@ -236,7 +234,7 @@ module ROM
|
|
236
234
|
# @param [Relation] relation The relation for the command
|
237
235
|
#
|
238
236
|
# @api private
|
239
|
-
def setup_associates(klass, relation,
|
237
|
+
def setup_associates(klass, relation, _meta, parent_relation)
|
240
238
|
assoc_name =
|
241
239
|
if relation.associations.key?(parent_relation)
|
242
240
|
parent_relation
|
@@ -71,8 +71,8 @@ module ROM
|
|
71
71
|
# @return [Command]
|
72
72
|
#
|
73
73
|
# @api public
|
74
|
-
def build(relation, options
|
75
|
-
new(relation, self.options
|
74
|
+
def build(relation, **options)
|
75
|
+
new(relation, **self.options, **options)
|
76
76
|
end
|
77
77
|
|
78
78
|
# Create a command class with a specific type
|
@@ -111,8 +111,8 @@ module ROM
|
|
111
111
|
# @option options [Symbol] :adapter (:default) first adapter to check for plugin
|
112
112
|
#
|
113
113
|
# @api public
|
114
|
-
def use(plugin, options
|
115
|
-
ROM.plugin_registry[:command].fetch(plugin, adapter).apply_to(self, options)
|
114
|
+
def use(plugin, **options)
|
115
|
+
ROM.plugin_registry[:command].fetch(plugin, adapter).apply_to(self, **options)
|
116
116
|
end
|
117
117
|
|
118
118
|
# Extend a command class with relation view methods
|
@@ -151,7 +151,7 @@ module ROM
|
|
151
151
|
# relation :users
|
152
152
|
# register_as :create
|
153
153
|
#
|
154
|
-
# before my_hook: { arg1: 1,
|
154
|
+
# before my_hook: { arg1: 1, arg2: 2 }
|
155
155
|
#
|
156
156
|
# def my_hook(tuple, arg1:, arg2:)
|
157
157
|
# puts "hook called with args: #{arg1} and #{arg2}"
|
@@ -164,7 +164,7 @@ module ROM
|
|
164
164
|
#
|
165
165
|
# @api public
|
166
166
|
def before(*hooks)
|
167
|
-
if hooks.
|
167
|
+
if !hooks.empty?
|
168
168
|
set_hooks(:before, hooks)
|
169
169
|
else
|
170
170
|
@before
|
@@ -209,7 +209,7 @@ module ROM
|
|
209
209
|
#
|
210
210
|
# @api public
|
211
211
|
def after(*hooks)
|
212
|
-
if hooks.
|
212
|
+
if !hooks.empty?
|
213
213
|
set_hooks(:after, hooks)
|
214
214
|
else
|
215
215
|
@after
|
data/lib/rom/commands/lazy.rb
CHANGED
@@ -44,7 +44,7 @@ module ROM
|
|
44
44
|
# @return [Array,Hash]
|
45
45
|
#
|
46
46
|
# @api public
|
47
|
-
def call(*
|
47
|
+
def call(*_args)
|
48
48
|
raise NotImplementedError
|
49
49
|
end
|
50
50
|
|
@@ -96,6 +96,7 @@ module ROM
|
|
96
96
|
super
|
97
97
|
end
|
98
98
|
end
|
99
|
+
ruby2_keywords(:method_missing) if respond_to?(:ruby2_keywords, true)
|
99
100
|
end
|
100
101
|
end
|
101
102
|
end
|
@@ -31,12 +31,12 @@ module ROM
|
|
31
31
|
input = evaluator.call(first)
|
32
32
|
|
33
33
|
if input.is_a?(Array)
|
34
|
-
input.map.with_index do |item,
|
35
|
-
command_proc[command, last, item].call(item,
|
34
|
+
input.map.with_index do |item, _index|
|
35
|
+
command_proc[command, last, item].call(item, *args[1..size - 1])
|
36
36
|
end
|
37
37
|
else
|
38
38
|
command_proc[command, *(size > 1 ? [last, input] : [input])]
|
39
|
-
.call(input, *args[1..size-1])
|
39
|
+
.call(input, *args[1..size - 1])
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
data/lib/rom/configuration.rb
CHANGED
@@ -37,8 +37,8 @@ module ROM
|
|
37
37
|
attr_reader :notifications
|
38
38
|
|
39
39
|
def_delegators :@setup, :register_relation, :register_command, :register_mapper, :register_plugin,
|
40
|
-
|
41
|
-
|
40
|
+
:command_classes, :mapper_classes,
|
41
|
+
:auto_registration
|
42
42
|
|
43
43
|
def_delegators :@environment, :gateways, :gateways_map, :configure, :config
|
44
44
|
|
@@ -54,7 +54,7 @@ module ROM
|
|
54
54
|
@notifications = Notifications.event_bus(:configuration)
|
55
55
|
@setup = Setup.new(notifications)
|
56
56
|
|
57
|
-
block
|
57
|
+
block&.call(self)
|
58
58
|
end
|
59
59
|
|
60
60
|
# Apply a plugin to the configuration
|
@@ -100,8 +100,8 @@ module ROM
|
|
100
100
|
|
101
101
|
# @api private
|
102
102
|
def adapter_for_gateway(gateway)
|
103
|
-
ROM.adapters.select do |
|
104
|
-
value.const_defined?(:Gateway) && gateway.
|
103
|
+
ROM.adapters.select do |_key, value|
|
104
|
+
value.const_defined?(:Gateway) && gateway.is_a?(value.const_get(:Gateway))
|
105
105
|
end.keys.first
|
106
106
|
end
|
107
107
|
|
data/lib/rom/constants.rb
CHANGED
@@ -14,7 +14,7 @@ module ROM
|
|
14
14
|
def initialize(adapter, component)
|
15
15
|
super(
|
16
16
|
"Failed to find #{component} class for #{adapter} adapter. " \
|
17
|
-
|
17
|
+
'Make sure ROM setup was started and the adapter identifier is correct.'
|
18
18
|
)
|
19
19
|
end
|
20
20
|
end
|
data/lib/rom/core/version.rb
CHANGED
data/lib/rom/data_proxy.rb
CHANGED
@@ -8,8 +8,8 @@ module ROM
|
|
8
8
|
#
|
9
9
|
# @private
|
10
10
|
module DataProxy
|
11
|
-
NON_FORWARDABLE = [
|
12
|
-
|
11
|
+
NON_FORWARDABLE = %i[
|
12
|
+
each to_a to_ary kind_of? instance_of? is_a?
|
13
13
|
].freeze
|
14
14
|
|
15
15
|
# Wrapped data array
|
@@ -46,6 +46,7 @@ module ROM
|
|
46
46
|
# @api private
|
47
47
|
def each
|
48
48
|
return to_enum unless block_given?
|
49
|
+
|
49
50
|
data.each { |tuple| yield(row_proc[tuple]) }
|
50
51
|
end
|
51
52
|
|
@@ -55,14 +55,14 @@ module ROM
|
|
55
55
|
|
56
56
|
forward :take
|
57
57
|
|
58
|
-
[
|
59
|
-
|
60
|
-
|
58
|
+
%i[
|
59
|
+
chunk collect collect_concat drop_while find_all flat_map
|
60
|
+
grep map reject select sort sort_by take_while
|
61
61
|
].each do |method|
|
62
62
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
63
63
|
def #{method}(*args, &block)
|
64
64
|
return to_enum unless block
|
65
|
-
self.class.new(super(*args, &block), options)
|
65
|
+
self.class.new(super(*args, &block), **options)
|
66
66
|
end
|
67
67
|
RUBY
|
68
68
|
end
|
data/lib/rom/environment.rb
CHANGED
data/lib/rom/header/attribute.rb
CHANGED
@@ -60,9 +60,7 @@ module ROM
|
|
60
60
|
|
61
61
|
meta[:type] ||= :object
|
62
62
|
|
63
|
-
if meta.key?(:header)
|
64
|
-
meta[:header] = Header.coerce(meta[:header], model: meta[:model])
|
65
|
-
end
|
63
|
+
meta[:header] = Header.coerce(meta[:header], model: meta[:model]) if meta.key?(:header)
|
66
64
|
|
67
65
|
self[meta].new(name, meta)
|
68
66
|
end
|
@@ -187,6 +185,6 @@ module ROM
|
|
187
185
|
hash: Hash,
|
188
186
|
array: Array,
|
189
187
|
exclude: Exclude
|
190
|
-
}
|
188
|
+
}.freeze
|
191
189
|
end
|
192
190
|
end
|