rom-repository 1.0.0.beta1 → 1.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -0
- data/lib/rom/repository/command_compiler.rb +1 -1
- data/lib/rom/repository/relation_proxy.rb +2 -2
- data/lib/rom/repository/relation_proxy/combine.rb +1 -1
- data/lib/rom/repository/relation_proxy/wrap.rb +2 -1
- data/lib/rom/repository/struct_builder.rb +1 -3
- data/lib/rom/repository/version.rb +1 -1
- data/spec/integration/command_spec.rb +2 -2
- data/spec/integration/repository_spec.rb +11 -0
- data/spec/shared/repo.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cdb0dfc90b48097d286f0d5b79790560d79c8fdd
|
4
|
+
data.tar.gz: ed15356517cc1dff17729d851e53b77f75727075
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc5b70717bbfb200cad2dc539f89c438398ae3dd3c6fb3f10f8d1c58c48e2be2b5d7bc01a729f738400e9b5021dbb070aa14fbdaec98c5ec8f30b57511e6448c
|
7
|
+
data.tar.gz: 88d6e30ab3107d583119ab1ed2a48bb83e138b2bc5026235acbb1a6932302a34037bb5315de976479d0c58895cb841026fe3239f8c3326e2093d882faf84942e
|
data/CHANGELOG.md
CHANGED
@@ -11,6 +11,7 @@
|
|
11
11
|
* Ability to define custom changeset classes that can be instantiated via `repo.changeset(MyChangesetClass[:rel_name]).data(some_data)` where `MyChangesetClass` inherits from a core changeset class (solnic)
|
12
12
|
* `Changeset.map` which accepts a block and exposes a DSL for data transformations (all [transproc hash methods](https://github.com/solnic/transproc)) are available (solnic)
|
13
13
|
* `Changeset#associate` method that accepts another changeset or parent data and an association identifier, ie `post_changeset.associate(user, :author)` (solnic)
|
14
|
+
* You can now use `wrap_parent` in combined relations too (which is gazillion times faster than `combine_parents`) (solnic)
|
14
15
|
|
15
16
|
### Changed
|
16
17
|
|
@@ -84,7 +84,7 @@ module ROM
|
|
84
84
|
#
|
85
85
|
# @api private
|
86
86
|
def with(new_options)
|
87
|
-
__new__(relation, new_options)
|
87
|
+
__new__(relation, options.merge(new_options))
|
88
88
|
end
|
89
89
|
|
90
90
|
# Returns if this relation is combined aka a relation graph
|
@@ -189,7 +189,7 @@ module ROM
|
|
189
189
|
#
|
190
190
|
# @api private
|
191
191
|
def wraps
|
192
|
-
meta.fetch(:wraps,
|
192
|
+
meta.fetch(:wraps, EMPTY_ARRAY)
|
193
193
|
end
|
194
194
|
|
195
195
|
# Forward to relation and wrap it with proxy if response was a relation too
|
@@ -38,7 +38,8 @@ module ROM
|
|
38
38
|
def wrap_parent(options)
|
39
39
|
wrap(
|
40
40
|
options.each_with_object({}) { |(name, parent), h|
|
41
|
-
|
41
|
+
keys = combine_keys(parent, relation, :children)
|
42
|
+
h[name] = [parent, keys]
|
42
43
|
}
|
43
44
|
)
|
44
45
|
end
|
@@ -50,9 +50,7 @@ module ROM
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def visit_attribute(attr)
|
53
|
-
|
54
|
-
[attr.aliased? && !attr.wrapped? ? attr.alias : attr.name, attr.type]
|
55
|
-
end
|
53
|
+
[attr.aliased? && !attr.wrapped? ? attr.alias : attr.name, attr.type]
|
56
54
|
end
|
57
55
|
|
58
56
|
def build_class(name, parent, &block)
|
@@ -37,9 +37,9 @@ RSpec.describe ROM::Repository, '#command' do
|
|
37
37
|
expect(user.name).to eql('Jane Doe')
|
38
38
|
end
|
39
39
|
|
40
|
-
it 'uses
|
40
|
+
it 'uses input_schema for command input' do
|
41
41
|
create_user = repo.command(create: :users)
|
42
|
-
expect(create_user.input).to eql(repo.users.
|
42
|
+
expect(create_user.input).to eql(repo.users.input_schema)
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'caches commands' do
|
@@ -95,6 +95,17 @@ RSpec.describe 'ROM repository' do
|
|
95
95
|
expect(jane.labels[1].name).to eql('blue')
|
96
96
|
end
|
97
97
|
|
98
|
+
it 'loads children and its parents via wrap' do
|
99
|
+
posts = repo.posts.wrap_parent(author: repo.users)
|
100
|
+
|
101
|
+
label = repo.labels.combine(many: { posts: posts }).first
|
102
|
+
|
103
|
+
expect(label.name).to eql('red')
|
104
|
+
expect(label.posts.size).to be(1)
|
105
|
+
expect(label.posts[0].title).to eql('Hello From Jane')
|
106
|
+
expect(label.posts[0].author.name).to eql('Jane')
|
107
|
+
end
|
108
|
+
|
98
109
|
it 'loads a parent via custom fks' do
|
99
110
|
post = repo.posts.combine(:author).where(title: 'Hello From Jane').one
|
100
111
|
|
data/spec/shared/repo.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rom-repository
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rom
|