rom-core 5.0.1 → 5.0.2
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/attribute.rb +2 -0
- data/lib/rom/gateway.rb +6 -33
- data/lib/rom/relation/combined.rb +15 -5
- data/lib/rom/schema/dsl.rb +1 -1
- data/lib/rom/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bccec1ca22ee806eff149f4e61c1c6cf75eed1dfb1944ee7635239fdff7d7d26
|
4
|
+
data.tar.gz: 6ed39c371e2541d83e0060df63278444b852713f3c8a177242b1c41bbbeb14cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f53fba8d16d7483f9b1779bcf461b71c4d3ed7cde17466765e022284a310c61947317340380ca8d9065ac8a4a0741d0c777b55f161d085355aa67a52d062f9e
|
7
|
+
data.tar.gz: e1508e8c595774a991c7a57eaa15bff719b83a022c768cc1f7e05931001321045524975ade75295c8e6963882cfe78f03f5f7dae4111916248f3364b2780200e
|
data/lib/rom/attribute.rb
CHANGED
@@ -22,6 +22,8 @@ module ROM
|
|
22
22
|
|
23
23
|
extend Initializer
|
24
24
|
|
25
|
+
META_OPTIONS = %i[primary_key foreign_key source target relation].freeze
|
26
|
+
|
25
27
|
# @!attribute [r] type
|
26
28
|
# @return [Dry::Types::Nominal, Dry::Types::Sum, Dry::Types::Constrained] The attribute's type object
|
27
29
|
param :type
|
data/lib/rom/gateway.rb
CHANGED
@@ -34,22 +34,6 @@ module ROM
|
|
34
34
|
# @param [Symbol] adapter The adapter identifier
|
35
35
|
defines :adapter
|
36
36
|
|
37
|
-
# @!method self.mapper_compiler
|
38
|
-
# Get or set gateway-specific mapper compiler class
|
39
|
-
#
|
40
|
-
# @overload mapper_compiler
|
41
|
-
# Return mapper compiler class
|
42
|
-
# @return [Class]
|
43
|
-
#
|
44
|
-
# @overload mapper_compiler(klass)
|
45
|
-
# @example
|
46
|
-
# class MyGateway < ROM::Gateway
|
47
|
-
# mapper_compiler MyMapperCompiler
|
48
|
-
# end
|
49
|
-
#
|
50
|
-
# @param [Class] klass The mapper compiler class
|
51
|
-
defines :mapper_compiler
|
52
|
-
|
53
37
|
# @!attribute [r] connection
|
54
38
|
# @return [Object] The gateway's connection object (type varies across adapters)
|
55
39
|
attr_reader :connection
|
@@ -106,17 +90,15 @@ module ROM
|
|
106
90
|
when Symbol
|
107
91
|
klass = class_from_symbol(gateway_or_scheme)
|
108
92
|
|
109
|
-
if klass.instance_method(:initialize).arity
|
93
|
+
if klass.instance_method(:initialize).arity.zero?
|
110
94
|
klass.new
|
111
95
|
else
|
112
96
|
klass.new(*args)
|
113
97
|
end
|
114
98
|
else
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
raise ArgumentError, "Can't accept arguments when passing an instance"
|
119
|
-
end
|
99
|
+
raise ArgumentError, "Can't accept arguments when passing an instance" unless args.empty?
|
100
|
+
|
101
|
+
gateway_or_scheme
|
120
102
|
end
|
121
103
|
end
|
122
104
|
|
@@ -128,7 +110,7 @@ module ROM
|
|
128
110
|
#
|
129
111
|
# @api private
|
130
112
|
def self.class_from_symbol(type)
|
131
|
-
adapter = ROM.adapters.fetch(type)
|
113
|
+
adapter = ROM.adapters.fetch(type) do
|
132
114
|
begin
|
133
115
|
require "rom/#{type}"
|
134
116
|
rescue LoadError
|
@@ -136,7 +118,7 @@ module ROM
|
|
136
118
|
end
|
137
119
|
|
138
120
|
ROM.adapters.fetch(type)
|
139
|
-
|
121
|
+
end
|
140
122
|
|
141
123
|
adapter.const_get(:Gateway)
|
142
124
|
end
|
@@ -196,15 +178,6 @@ module ROM
|
|
196
178
|
transaction_runner(opts).run(opts, &block)
|
197
179
|
end
|
198
180
|
|
199
|
-
# Return configured mapper compiler class
|
200
|
-
#
|
201
|
-
# @return [Class]
|
202
|
-
#
|
203
|
-
# @api private
|
204
|
-
def mapper_compiler
|
205
|
-
self.class.mapper_compiler
|
206
|
-
end
|
207
|
-
|
208
181
|
private
|
209
182
|
|
210
183
|
# @api private
|
@@ -14,15 +14,25 @@ module ROM
|
|
14
14
|
|
15
15
|
# Create a new relation combined with others
|
16
16
|
#
|
17
|
-
# @param [Relation]
|
17
|
+
# @param [Relation] relation
|
18
18
|
# @param [Array<Relation>] nodes
|
19
19
|
#
|
20
20
|
# @return [Combined]
|
21
21
|
#
|
22
22
|
# @api public
|
23
|
-
def self.new(
|
24
|
-
|
25
|
-
|
23
|
+
def self.new(relation, nodes)
|
24
|
+
struct_ns = relation.options[:struct_namespace]
|
25
|
+
new_nodes = nodes.map { |node| node.struct_namespace(struct_ns) }
|
26
|
+
|
27
|
+
root =
|
28
|
+
if relation.is_a?(self)
|
29
|
+
new_nodes.concat(relation.nodes)
|
30
|
+
relation.root
|
31
|
+
else
|
32
|
+
relation
|
33
|
+
end
|
34
|
+
|
35
|
+
super(root, new_nodes)
|
26
36
|
end
|
27
37
|
|
28
38
|
# Combine this graph with more nodes
|
@@ -142,7 +152,7 @@ module ROM
|
|
142
152
|
|
143
153
|
# @api private
|
144
154
|
def decorate?(other)
|
145
|
-
super || other.is_a?(Wrap)
|
155
|
+
super || other.is_a?(self.class) || other.is_a?(Wrap)
|
146
156
|
end
|
147
157
|
end
|
148
158
|
end
|
data/lib/rom/schema/dsl.rb
CHANGED
@@ -149,7 +149,7 @@ module ROM
|
|
149
149
|
type.meta(source: relation, read: type.meta[:read].optional)
|
150
150
|
else
|
151
151
|
type.meta(source: relation)
|
152
|
-
end
|
152
|
+
end.meta(Attribute::META_OPTIONS.map { |opt| [opt, options[opt]] if options.key?(opt) }.compact.to_h)
|
153
153
|
end
|
154
154
|
|
155
155
|
# Specify which key(s) should be the primary key
|
data/lib/rom/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rom-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|