rom-core 5.3.1 → 5.4.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.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rom/array_dataset.rb +5 -5
  3. data/lib/rom/association_set.rb +1 -2
  4. data/lib/rom/associations/definitions/abstract.rb +5 -3
  5. data/lib/rom/associations/many_to_many.rb +1 -2
  6. data/lib/rom/attribute.rb +15 -37
  7. data/lib/rom/auto_curry.rb +34 -23
  8. data/lib/rom/cache.rb +9 -21
  9. data/lib/rom/command.rb +19 -37
  10. data/lib/rom/command_compiler.rb +12 -14
  11. data/lib/rom/command_proxy.rb +6 -10
  12. data/lib/rom/command_registry.rb +4 -8
  13. data/lib/rom/commands/class_interface.rb +20 -20
  14. data/lib/rom/commands/composite.rb +3 -0
  15. data/lib/rom/commands/graph/class_interface.rb +3 -1
  16. data/lib/rom/commands/graph/input_evaluator.rb +3 -1
  17. data/lib/rom/commands/graph.rb +3 -0
  18. data/lib/rom/commands/lazy/create.rb +2 -0
  19. data/lib/rom/commands/lazy/update.rb +2 -0
  20. data/lib/rom/commands/lazy.rb +2 -3
  21. data/lib/rom/configuration.rb +14 -16
  22. data/lib/rom/configuration_dsl/command.rb +2 -2
  23. data/lib/rom/configuration_dsl/command_dsl.rb +9 -5
  24. data/lib/rom/configuration_dsl/mapper_dsl.rb +12 -3
  25. data/lib/rom/configuration_dsl/relation.rb +4 -2
  26. data/lib/rom/configuration_dsl.rb +8 -10
  27. data/lib/rom/constants.rb +26 -26
  28. data/lib/rom/container.rb +15 -15
  29. data/lib/rom/core/version.rb +1 -1
  30. data/lib/rom/core.rb +0 -1
  31. data/lib/rom/create_container.rb +3 -5
  32. data/lib/rom/data_proxy.rb +13 -15
  33. data/lib/rom/enumerable_dataset.rb +6 -6
  34. data/lib/rom/environment.rb +5 -5
  35. data/lib/rom/gateway.rb +4 -12
  36. data/lib/rom/global/plugin_dsl.rb +4 -4
  37. data/lib/rom/global.rb +2 -2
  38. data/lib/rom/header/attribute.rb +1 -1
  39. data/lib/rom/header.rb +13 -35
  40. data/lib/rom/initializer.rb +11 -15
  41. data/lib/rom/lint/enumerable_dataset.rb +2 -1
  42. data/lib/rom/lint/gateway.rb +3 -1
  43. data/lib/rom/lint/linter.rb +2 -2
  44. data/lib/rom/lint/test.rb +4 -6
  45. data/lib/rom/mapper/attribute_dsl.rb +39 -27
  46. data/lib/rom/mapper/builder.rb +2 -2
  47. data/lib/rom/mapper/dsl.rb +2 -3
  48. data/lib/rom/mapper/model_dsl.rb +5 -1
  49. data/lib/rom/mapper.rb +2 -4
  50. data/lib/rom/mapper_compiler.rb +3 -2
  51. data/lib/rom/mapper_registry.rb +2 -4
  52. data/lib/rom/memory/commands.rb +1 -1
  53. data/lib/rom/memory/dataset.rb +7 -5
  54. data/lib/rom/memory/gateway.rb +1 -0
  55. data/lib/rom/model_builder.rb +14 -14
  56. data/lib/rom/open_struct.rb +1 -1
  57. data/lib/rom/pipeline.rb +17 -20
  58. data/lib/rom/plugin_registry.rb +4 -10
  59. data/lib/rom/plugins/command/timestamps.rb +9 -5
  60. data/lib/rom/plugins/relation/instrumentation.rb +7 -2
  61. data/lib/rom/plugins/relation/registry_reader.rb +3 -15
  62. data/lib/rom/plugins.rb +1 -3
  63. data/lib/rom/processor/transproc.rb +14 -4
  64. data/lib/rom/processor.rb +1 -0
  65. data/lib/rom/registry.rb +20 -29
  66. data/lib/rom/relation/class_interface.rb +18 -16
  67. data/lib/rom/relation/combined.rb +7 -4
  68. data/lib/rom/relation/composite.rb +2 -6
  69. data/lib/rom/relation/curried.rb +12 -11
  70. data/lib/rom/relation/graph.rb +4 -12
  71. data/lib/rom/relation/loaded.rb +8 -16
  72. data/lib/rom/relation/materializable.rb +6 -14
  73. data/lib/rom/relation/name.rb +5 -14
  74. data/lib/rom/relation/view_dsl.rb +7 -9
  75. data/lib/rom/relation/wrap.rb +3 -9
  76. data/lib/rom/relation.rb +39 -81
  77. data/lib/rom/schema/associations_dsl.rb +4 -8
  78. data/lib/rom/schema/dsl.rb +14 -13
  79. data/lib/rom/schema/inferrer.rb +5 -3
  80. data/lib/rom/schema.rb +27 -41
  81. data/lib/rom/setup/auto_registration.rb +4 -6
  82. data/lib/rom/setup/auto_registration_strategies/base.rb +1 -1
  83. data/lib/rom/setup/auto_registration_strategies/custom_namespace.rb +4 -8
  84. data/lib/rom/setup/finalize/finalize_commands.rb +3 -0
  85. data/lib/rom/setup/finalize/finalize_mappers.rb +16 -14
  86. data/lib/rom/setup/finalize/finalize_relations.rb +30 -4
  87. data/lib/rom/setup/finalize.rb +17 -3
  88. data/lib/rom/setup.rb +5 -4
  89. data/lib/rom/struct.rb +20 -18
  90. data/lib/rom/struct_compiler.rb +4 -7
  91. data/lib/rom/support/configurable.rb +10 -20
  92. data/lib/rom/support/memoizable.rb +10 -9
  93. data/lib/rom/support/notifications.rb +4 -8
  94. data/lib/rom/transaction.rb +2 -4
  95. data/lib/rom/transformer.rb +6 -10
  96. data/lib/rom/types.rb +3 -6
  97. metadata +15 -57
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ae6b01692488043cd86dd5455cae4f93beb7296adf0b76d8d74fac476aef8be
4
- data.tar.gz: 8274d534bc19583a6cbf6dfb007cdd49ed7855f0786bda5601f5e0bb94a90a6f
3
+ metadata.gz: d157d2abe517cdafa10b73c50b3ccf54647a5251887b0bd59e007abfc72b5de3
4
+ data.tar.gz: 944ee8977bd9cdd2e980c7d67ec5d96e96db4dd51b8372218cfaaa58ddb397e7
5
5
  SHA512:
6
- metadata.gz: 707b384f4b383bfd2dccbb2566eb48794f9ab39feca3f9b882e9787a6cc7abca250bb79197a264a18bd3db96836a4578fca8982b9f0c8e0bb9547aaf13c9ab10
7
- data.tar.gz: 98aafce85e3a9a5bd89ad4926d5e5bfe1778a8ddbfca59ac471a5ed857983492ca5ce91c898b1727447d78e67f49d45bdd793ba140c7f81c0cc14427230209cb
6
+ metadata.gz: 346ca3842e535322fd537e01812db38ee8f1f9b5eb35087deb3e8bfa3e55d378b9702a12f49f9e084610307281ab1a638c728dafa598517bd691104d80be12a3
7
+ data.tar.gz: a60428bda2a664a8b38deec4fd272ecb02e31cb3530bd9e5f4a6f30371f128fb6abb4186e4d914a8f8f35c7d7c6d3cfa771a47aea47c9fe1dd212683c0321b88
@@ -35,11 +35,11 @@ module ROM
35
35
  map! combination cycle delete_if keep_if permutation reject!
36
36
  select! sort_by!
37
37
  ].each do |method|
38
- class_eval <<-RUBY, __FILE__, __LINE__ + 1
39
- def #{method}(*args, &block)
40
- return to_enum unless block
41
- self.class.new(data.send(:#{method}, *args, &block), **options)
42
- end
38
+ class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
39
+ def #{method}(*args, &) # def map!(*args, &)
40
+ return to_enum unless block_given? # return to_enum unless block_given?
41
+ self.class.new(data.__send__(:#{method}, *args, &), **options) # self.class.new(data.__send__(:map!, *args, &), **options)
42
+ end # end
43
43
  RUBY
44
44
  end
45
45
  end
@@ -9,12 +9,11 @@ module ROM
9
9
  # @api public
10
10
  class AssociationSet < ROM::Registry
11
11
  # @api private
12
- def initialize(*)
12
+ def initialize(...)
13
13
  super
14
14
  elements.values.each do |assoc|
15
15
  elements[assoc.name] = assoc if assoc.aliased? && !key?(assoc.name)
16
16
  end
17
17
  end
18
- ruby2_keywords(:initialize) if respond_to?(:ruby2_keywords, true)
19
18
  end
20
19
  end
@@ -67,14 +67,16 @@ module ROM
67
67
  # @option opts [Symbol] :as The name of the association (defaults to target)
68
68
  # @option opts [Symbol] :relation The name of the target relation (defaults to target)
69
69
  # @option opts [Symbol] :foreign_key The name of a custom foreign key
70
- # @option opts [Symbol] :view The name of a custom relation view on the target's relation side
71
- # @option opts [TrueClass,FalseClass] :override Whether provided :view should override association's default view
70
+ # @option opts [Symbol] :view The name of a custom relation view
71
+ # on the target's relation side
72
+ # @option opts [true, false] :override Whether provided :view should override
73
+ # association's default view
72
74
  #
73
75
  # @api public
74
76
  def self.new(source, target, **opts)
75
77
  source_name = Relation::Name[source]
76
78
  target_name = resolve_target_name(target, opts)
77
- options = process_options(target_name, Hash[opts])
79
+ options = process_options(target_name, opts.to_h)
78
80
 
79
81
  super(source_name, target_name, **options)
80
82
  end
@@ -14,11 +14,10 @@ module ROM
14
14
  attr_reader :join_relation
15
15
 
16
16
  # @api private
17
- def initialize(*)
17
+ def initialize(*, **)
18
18
  super
19
19
  @join_relation = relations[through]
20
20
  end
21
- ruby2_keywords(:initialize) if respond_to?(:ruby2_keywords, true)
22
21
 
23
22
  # Adapters should implement this method
24
23
  #
data/lib/rom/attribute.rb CHANGED
@@ -23,7 +23,8 @@ module ROM
23
23
  META_OPTIONS = %i[primary_key foreign_key source target relation].freeze
24
24
 
25
25
  # @!attribute [r] type
26
- # @return [Dry::Types::Nominal, Dry::Types::Sum, Dry::Types::Constrained] The attribute's type object
26
+ # @return [Dry::Types::Nominal, Dry::Types::Sum, Dry::Types::Constrained] The attribute's
27
+ # type object
27
28
  param :type
28
29
 
29
30
  # @!attribute [r] name
@@ -82,9 +83,7 @@ module ROM
82
83
  # @return [TrueClass,FalseClass]
83
84
  #
84
85
  # @api public
85
- def primary_key?
86
- meta[:primary_key].equal?(true)
87
- end
86
+ def primary_key? = meta[:primary_key].equal?(true)
88
87
 
89
88
  # Return true if this attribute type is a foreign key
90
89
  #
@@ -105,9 +104,7 @@ module ROM
105
104
  # @return [TrueClass,FalseClass]
106
105
  #
107
106
  # @api public
108
- def foreign_key?
109
- meta[:foreign_key].equal?(true)
110
- end
107
+ def foreign_key? = meta[:foreign_key].equal?(true)
111
108
 
112
109
  # Return true if this attribute has a configured alias
113
110
  #
@@ -128,9 +125,7 @@ module ROM
128
125
  # @return [TrueClass,FalseClass]
129
126
  #
130
127
  # @api public
131
- def aliased?
132
- !self.alias.nil?
133
- end
128
+ def aliased? = !self.alias.nil?
134
129
 
135
130
  # Return source relation of this attribute type
136
131
  #
@@ -151,9 +146,7 @@ module ROM
151
146
  # @return [Symbol, Relation::Name]
152
147
  #
153
148
  # @api public
154
- def source
155
- meta[:source]
156
- end
149
+ def source = meta[:source]
157
150
 
158
151
  # Return target relation of this attribute type
159
152
  #
@@ -174,9 +167,7 @@ module ROM
174
167
  # @return [NilClass, Symbol, Relation::Name]
175
168
  #
176
169
  # @api public
177
- def target
178
- meta[:target]
179
- end
170
+ def target = meta[:target]
180
171
 
181
172
  # Return tuple key
182
173
  #
@@ -199,9 +190,7 @@ module ROM
199
190
  # @return [Symbol]
200
191
  #
201
192
  # @api public
202
- def key
203
- self.alias || name
204
- end
193
+ def key = self.alias || name
205
194
 
206
195
  # Return new attribute type with provided alias
207
196
  #
@@ -229,9 +218,7 @@ module ROM
229
218
  # @return [Attribute]
230
219
  #
231
220
  # @api public
232
- def aliased(name)
233
- with(alias: name)
234
- end
221
+ def aliased(name) = with(alias: name)
235
222
  alias_method :as, :aliased
236
223
 
237
224
  # Return new attribute type with an alias using provided prefix
@@ -276,9 +263,7 @@ module ROM
276
263
  # correctly in places like auto-mapping.
277
264
  #
278
265
  # @api public
279
- def wrapped?
280
- meta[:wrapped].equal?(true)
281
- end
266
+ def wrapped? = meta[:wrapped].equal?(true)
282
267
 
283
268
  # Return attribute type wrapped for the specified relation name
284
269
  #
@@ -337,27 +322,21 @@ module ROM
337
322
  # @return [TrueClass, FalseClass]
338
323
  #
339
324
  # @api private
340
- def read?
341
- !meta[:read].nil?
342
- end
325
+ def read? = !meta[:read].nil?
343
326
 
344
327
  # Return read type
345
328
  #
346
329
  # @return [Dry::Types::Type]
347
330
  #
348
331
  # @api private
349
- def to_read_type
350
- read? ? meta[:read] : type
351
- end
332
+ def to_read_type = read? ? meta[:read] : type
352
333
 
353
334
  # Return write type
354
335
  #
355
336
  # @return [Dry::Types::Type]
356
337
  #
357
338
  # @api private
358
- def to_write_type
359
- type
360
- end
339
+ def to_write_type = type
361
340
 
362
341
  # Return nullable attribute
363
342
  #
@@ -405,9 +384,9 @@ module ROM
405
384
  private
406
385
 
407
386
  # @api private
408
- def method_missing(meth, *args, &block)
387
+ def method_missing(meth, ...)
409
388
  if type.respond_to?(meth)
410
- response = type.__send__(meth, *args, &block)
389
+ response = type.__send__(meth, ...)
411
390
 
412
391
  if response.is_a?(type.class)
413
392
  self.class.new(response, **options)
@@ -418,6 +397,5 @@ module ROM
418
397
  super
419
398
  end
420
399
  end
421
- ruby2_keywords(:method_missing) if respond_to?(:ruby2_keywords, true)
422
400
  end
423
401
  end
@@ -5,6 +5,33 @@ module ROM
5
5
  #
6
6
  # @api private
7
7
  module AutoCurry
8
+ # @api private
9
+ class Wrapper < ::Module
10
+ def initialize(name, arity, &block)
11
+ define_method(name) do |*args, **kwargs, &mblock|
12
+ kwargs_size =
13
+ if kwargs.empty?
14
+ 0
15
+ else
16
+ 1
17
+ end
18
+
19
+ response =
20
+ if arity.negative? || arity.eql?(args.size + kwargs_size)
21
+ super(*args, **kwargs, &mblock)
22
+ else
23
+ self.class.curried.new(self, view: name, curry_args: args, arity: arity)
24
+ end
25
+
26
+ if block
27
+ response.instance_exec(&block)
28
+ else
29
+ response
30
+ end
31
+ end
32
+ end
33
+ end
34
+
8
35
  def self.extended(klass)
9
36
  klass.define_singleton_method(:method_added) do |name|
10
37
  return if auto_curry_busy?
@@ -37,34 +64,18 @@ module ROM
37
64
  # @param [Symbol] name The name of a method
38
65
  #
39
66
  # @api private
40
- def auto_curry(name, &block)
67
+ def auto_curry(name, &)
41
68
  arity = instance_method(name).arity
42
69
 
43
- return unless public_instance_methods.include?(name) && arity != 0
70
+ if public_instance_methods.include?(name) && arity != 0
71
+ mod = Wrapper.new(name, arity, &)
44
72
 
45
- mod = Module.new
46
-
47
- mod.module_eval do
48
- define_method(name) do |*args, &mblock|
49
- response =
50
- if arity < 0 || arity == args.size
51
- super(*args, &mblock)
52
- else
53
- self.class.curried.new(self, view: name, curry_args: args, arity: arity)
54
- end
73
+ auto_curried_methods << name
55
74
 
56
- if block
57
- response.instance_exec(&block)
58
- else
59
- response
60
- end
61
- end
62
- ruby2_keywords(name) if respond_to?(:ruby2_keywords, true)
75
+ prepend(mod)
76
+ else
77
+ self
63
78
  end
64
-
65
- auto_curried_methods << name
66
-
67
- prepend(mod)
68
79
  end
69
80
  end
70
81
  end
data/lib/rom/cache.rb CHANGED
@@ -24,45 +24,33 @@ module ROM
24
24
  end
25
25
 
26
26
  # @api private
27
- def [](key)
28
- cache[[namespace, key].hash]
29
- end
27
+ def [](key) = cache[[namespace, key].hash]
30
28
 
31
29
  # @api private
32
- def fetch_or_store(*args, &block)
33
- cache.fetch_or_store([namespace, args.hash].hash, &block)
30
+ def fetch_or_store(*args, &)
31
+ cache.fetch_or_store([namespace, args].hash, &)
34
32
  end
35
33
 
36
34
  # @api private
37
- def size
38
- cache.size
39
- end
35
+ def size = cache.size
40
36
 
41
37
  # @api private
42
- def inspect
43
- %(#<#{self.class} size=#{size}>)
44
- end
38
+ def inspect = %(#<#{self.class} size=#{size}>)
45
39
  end
46
40
 
47
41
  # @api private
48
42
  def initialize
49
- @objects = Concurrent::Map.new
43
+ @objects = ::Concurrent::Map.new
50
44
  @namespaced = {}
51
45
  end
52
46
 
53
- def [](key)
54
- cache[key]
55
- end
47
+ def [](key) = objects[key]
56
48
 
57
49
  # @api private
58
- def fetch_or_store(*args, &block)
59
- objects.fetch_or_store(args.hash, &block)
60
- end
50
+ def fetch_or_store(*args, &) = objects.fetch_or_store(args.hash, &)
61
51
 
62
52
  # @api private
63
- def size
64
- objects.size
65
- end
53
+ def size = objects.size
66
54
 
67
55
  # @api private
68
56
  def namespaced(namespace)
data/lib/rom/command.rb CHANGED
@@ -265,7 +265,9 @@ module ROM
265
265
  # This method will apply before/after hooks automatically
266
266
  #
267
267
  # @api public
268
- def call(*args, &block)
268
+ #
269
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
270
+ def call(*args, &)
269
271
  tuples =
270
272
  if hooks?
271
273
  prepared =
@@ -275,7 +277,7 @@ module ROM
275
277
  apply_hooks(before_hooks, *args)
276
278
  end
277
279
 
278
- result = prepared ? execute(prepared, &block) : execute(&block)
280
+ result = prepared ? execute(prepared, &) : execute(&)
279
281
 
280
282
  if curried?
281
283
  if !args.empty?
@@ -286,10 +288,10 @@ module ROM
286
288
  apply_hooks(after_hooks, result)
287
289
  end
288
290
  else
289
- apply_hooks(after_hooks, result, *args[1..args.size - 1])
291
+ apply_hooks(after_hooks, result, *args.drop(1))
290
292
  end
291
293
  else
292
- execute(*(curry_args + args), &block)
294
+ execute(*(curry_args + args), &)
293
295
  end
294
296
 
295
297
  if one?
@@ -298,6 +300,8 @@ module ROM
298
300
  tuples
299
301
  end
300
302
  end
303
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
304
+
301
305
  alias_method :[], :call
302
306
 
303
307
  # Curry this command with provided args
@@ -323,18 +327,14 @@ module ROM
323
327
  # @return [Command::Graph]
324
328
  #
325
329
  # @api public
326
- def combine(*others)
327
- Graph.new(self, others)
328
- end
330
+ def combine(*others) = Graph.new(self, others)
329
331
 
330
332
  # Check if this command is curried
331
333
  #
332
334
  # @return [TrueClass, FalseClass]
333
335
  #
334
336
  # @api public
335
- def curried?
336
- !curry_args.empty?
337
- end
337
+ def curried? = !curry_args.empty?
338
338
 
339
339
  # Return a new command with appended before hooks
340
340
  #
@@ -363,18 +363,14 @@ module ROM
363
363
  # @return [Array]
364
364
  #
365
365
  # @api public
366
- def before_hooks
367
- options[:before]
368
- end
366
+ def before_hooks = options[:before]
369
367
 
370
368
  # List of after hooks
371
369
  #
372
370
  # @return [Array]
373
371
  #
374
372
  # @api public
375
- def after_hooks
376
- options[:after]
377
- end
373
+ def after_hooks = options[:after]
378
374
 
379
375
  # Return a new command with other source relation
380
376
  #
@@ -390,54 +386,42 @@ module ROM
390
386
  # Check if this command has any hooks
391
387
  #
392
388
  # @api private
393
- def hooks?
394
- !before_hooks.empty? || !after_hooks.empty?
395
- end
389
+ def hooks? = !before_hooks.empty? || !after_hooks.empty?
396
390
 
397
391
  # Check if this command is lazy
398
392
  #
399
393
  # @return [false]
400
394
  #
401
395
  # @api private
402
- def lazy?
403
- false
404
- end
396
+ def lazy? = false
405
397
 
406
398
  # Check if this command is a graph
407
399
  #
408
400
  # @return [false]
409
401
  #
410
402
  # @api private
411
- def graph?
412
- false
413
- end
403
+ def graph? = false
414
404
 
415
405
  # Check if this command returns a single tuple
416
406
  #
417
407
  # @return [TrueClass,FalseClass]
418
408
  #
419
409
  # @api private
420
- def one?
421
- result.equal?(:one)
422
- end
410
+ def one? = result.equal?(:one)
423
411
 
424
412
  # Check if this command returns many tuples
425
413
  #
426
414
  # @return [TrueClass,FalseClass]
427
415
  #
428
416
  # @api private
429
- def many?
430
- result.equal?(:many)
431
- end
417
+ def many? = result.equal?(:many)
432
418
 
433
419
  # Check if this command is restrictible through relation
434
420
  #
435
421
  # @return [TrueClass,FalseClass]
436
422
  #
437
423
  # @api private
438
- def restrictible?
439
- self.class.restrictable.equal?(true)
440
- end
424
+ def restrictible? = self.class.restrictable.equal?(true)
441
425
 
442
426
  # Yields tuples for insertion or return an enumerator
443
427
  #
@@ -459,9 +443,7 @@ module ROM
459
443
  # @return [Class]
460
444
  #
461
445
  # @api private
462
- def composite_class
463
- Command::Composite
464
- end
446
+ def composite_class = Command::Composite
465
447
 
466
448
  # Apply provided hooks
467
449
  #
@@ -128,6 +128,8 @@ module ROM
128
128
  private
129
129
 
130
130
  # @api private
131
+ #
132
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
131
133
  def visit_relation(node, parent_relation = nil)
132
134
  name, header, meta = node
133
135
  other = header.map { |attr| visit(attr, name) }.compact
@@ -157,21 +159,20 @@ module ROM
157
159
  default_mapping
158
160
  end
159
161
 
160
- if !other.empty?
161
- [mapping, [type, other]]
162
- else
162
+ if other.empty?
163
163
  [mapping, type]
164
+ else
165
+ [mapping, [type, other]]
164
166
  end
165
167
  else
166
168
  registry[name][id] = commands[name][id]
167
169
  [name, id]
168
170
  end
169
171
  end
172
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
170
173
 
171
174
  # @api private
172
- def visit_attribute(*_args)
173
- nil
174
- end
175
+ def visit_attribute(*_args) = nil
175
176
 
176
177
  # Build a command object for a specific relation
177
178
  #
@@ -187,6 +188,8 @@ module ROM
187
188
  # @return [ROM::Command]
188
189
  #
189
190
  # @api private
191
+ #
192
+ # rubocop:disable Metrics/AbcSize
190
193
  def register_command(rel_name, type, rel_meta, parent_relation = nil)
191
194
  relation = relations[rel_name]
192
195
 
@@ -216,15 +219,14 @@ module ROM
216
219
  registry[rel_name][type] = klass.build(relation)
217
220
  end
218
221
  end
222
+ # rubocop:enable Metrics/AbcSize
219
223
 
220
224
  # Return default result type
221
225
  #
222
226
  # @return [Symbol]
223
227
  #
224
228
  # @api private
225
- def result
226
- meta.fetch(:result, :one)
227
- end
229
+ def result = meta.fetch(:result, :one)
228
230
 
229
231
  # Sets up `associates` plugin for a given command class and relation
230
232
  #
@@ -241,11 +243,7 @@ module ROM
241
243
  singular_name if relation.associations.key?(singular_name)
242
244
  end
243
245
 
244
- if assoc_name
245
- klass.associates(assoc_name)
246
- else
247
- klass.associates(parent_relation)
248
- end
246
+ klass.associates(assoc_name || parent_relation)
249
247
  end
250
248
  end
251
249
  end
@@ -8,7 +8,9 @@ module ROM
8
8
  #
9
9
  # @api private
10
10
  class CommandProxy
11
- attr_reader :command, :root
11
+ attr_reader :command
12
+
13
+ attr_reader :root
12
14
 
13
15
  # @api private
14
16
  def initialize(command, root = Inflector.singularize(command.name.relation).to_sym)
@@ -17,18 +19,12 @@ module ROM
17
19
  end
18
20
 
19
21
  # @api private
20
- def call(input)
21
- command.call(root => input)
22
- end
22
+ def call(input) = command.call(root => input)
23
23
 
24
24
  # @api private
25
- def >>(other)
26
- self.class.new(command >> other)
27
- end
25
+ def >>(other) = self.class.new(command >> other)
28
26
 
29
27
  # @api private
30
- def restrictible?
31
- command.restrictible?
32
- end
28
+ def restrictible? = command.restrictible?
33
29
  end
34
30
  end
@@ -34,9 +34,7 @@ module ROM
34
34
  option :compiler, optional: true
35
35
 
36
36
  # @api private
37
- def self.element_not_found_error
38
- CommandNotFoundError
39
- end
37
+ def self.element_not_found_error = CommandNotFoundError
40
38
 
41
39
  # Return a command from the registry
42
40
  #
@@ -86,17 +84,15 @@ module ROM
86
84
  # @return [CommandRegistry]
87
85
  #
88
86
  # @api public
89
- def map_with(mapper_name)
90
- with(mapper: mappers[mapper_name])
91
- end
87
+ def map_with(mapper_name) = with(mapper: mappers[mapper_name])
92
88
 
93
89
  # @api private
94
- def set_compiler(compiler)
90
+ def set_compiler(compiler) # rubocop:disable Naming/AccessorMethodName
95
91
  options[:compiler] = @compiler = compiler
96
92
  end
97
93
 
98
94
  # @api private
99
- def set_mappers(mappers)
95
+ def set_mappers(mappers) # rubocop:disable Naming/AccessorMethodName
100
96
  options[:mappers] = @mappers = mappers
101
97
  end
102
98