rom-repository 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ddf55be4802e4f11c814bf9452e1fcb6e02a71a6
4
- data.tar.gz: 9de11b947549b756500724055a45e73723d4cab6
3
+ metadata.gz: 69a0d338b66452b9d5434b08129f04c7ce0a260a
4
+ data.tar.gz: 98e1038b529b861828284565d6e7fa59f3da5fbc
5
5
  SHA512:
6
- metadata.gz: 155c3435da829762d9d10a15f5baf688f6bb4313ffef93ffee9b4d7e9d341c667c4d49dbb41145e6e53efa44e0cfbe592bac6522e08da457b95f16200703a3cd
7
- data.tar.gz: a4c944bf075bbb56f3afaa74bfd5e53c5393b38261c191af05ce69dc12f42e4c0ae19e4e3a805dacab1d8fcfb5625bca2a1d618f141018ad5bf0eb2d7ca64929
6
+ metadata.gz: 0bde95e0e0fda272e1737e6eda953896f8fb5f3ce9a52620bcf41b469ef0f796dd05e11d2f05d6ed1fc1fd81004bb87fe7f2685e1151bc9414735f3d19c9b527
7
+ data.tar.gz: b1b0a57585cc0cd60dfd3be82fc51e75ccdfacca7d6cdfa580d2216d2fe1358d018e68838a25ed6fa13eb909fbf3544a578ad6e0981d6ebf731440b45cbf0c5d
data/.travis.yml CHANGED
@@ -3,7 +3,7 @@ sudo: false
3
3
  cache: bundler
4
4
  bundler_args: --without yard guard benchmarks tools
5
5
  before_script:
6
- - psql -c 'create database rom;' -U postgres
6
+ - psql -c 'create database rom_repository' -U postgres
7
7
  script: "bundle exec rake ci"
8
8
  rvm:
9
9
  - 2.0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,31 @@
1
+ # v0.1.0 2015-08-19
2
+
3
+ This release ensures that relations from different adapters can be composed
4
+ together :tada:
5
+
6
+ ### Fixed
7
+
8
+ - Plugins are registered correctly for multi-env setups (AMHOL)
9
+ - multi-block `view` syntax works correctly when header is not provided as options (solnic)
10
+
11
+ [Compare v0.0.2...v0.1.0](https://github.com/rom-rb/rom-repository/compare/v0.0.2...v0.1.0)
12
+
13
+ # v0.0.2 2015-08-10
14
+
15
+ ### Added
16
+
17
+ - `view` relation plugin (solnic)
18
+ - `key_inference` relation plugin (solnic)
19
+ - `base_view` sql relation plugin (solnic)
20
+ - `auto_combine` sql relation plugin (solnic)
21
+ - `auto_wrap` sql relation plugin (solnic)
22
+
23
+ ### Changed
24
+
25
+ - Switched to extracted `rom-mapper` gem (solnic)
26
+
27
+ [Compare v0.0.1...v0.0.2](https://github.com/rom-rb/rom-repository/compare/v0.0.1...v0.0.2)
28
+
1
29
  # v0.0.1 2015-08-05
2
30
 
3
31
  First public release \o/
@@ -24,8 +24,8 @@ module ROM
24
24
  end
25
25
  end
26
26
  end
27
+ end
27
28
 
28
- plugins do
29
- register :key_inference, Plugins::Relation::KeyInference, type: :relation
30
- end
29
+ ROM.plugins do
30
+ register :key_inference, ROM::Plugins::Relation::KeyInference, type: :relation
31
31
  end
@@ -36,10 +36,10 @@ module ROM
36
36
  end
37
37
  end
38
38
  end
39
+ end
39
40
 
40
- plugins do
41
- adapter :sql do
42
- register :auto_combine, Plugins::Relation::SQL::AutoCombine, type: :relation
43
- end
41
+ ROM.plugins do
42
+ adapter :sql do
43
+ register :auto_combine, ROM::Plugins::Relation::SQL::AutoCombine, type: :relation
44
44
  end
45
45
  end
@@ -39,10 +39,10 @@ module ROM
39
39
  end
40
40
  end
41
41
  end
42
+ end
42
43
 
43
- plugins do
44
- adapter :sql do
45
- register :auto_wrap, Plugins::Relation::SQL::AutoWrap, type: :relation
46
- end
44
+ ROM.plugins do
45
+ adapter :sql do
46
+ register :auto_wrap, ROM::Plugins::Relation::SQL::AutoWrap, type: :relation
47
47
  end
48
48
  end
@@ -20,10 +20,10 @@ module ROM
20
20
  end
21
21
  end
22
22
  end
23
+ end
23
24
 
24
- plugins do
25
- adapter :sql do
26
- register :base_view, Plugins::Relation::SQL::BaseView, type: :relation
27
- end
25
+ ROM.plugins do
26
+ adapter :sql do
27
+ register :base_view, ROM::Plugins::Relation::SQL::BaseView, type: :relation
28
28
  end
29
29
  end
@@ -53,8 +53,12 @@ module ROM
53
53
  #
54
54
  # @api public
55
55
  def view(*args, &block)
56
+ if args.size == 1 && block.arity > 0
57
+ raise ArgumentError, "header must be set as second argument"
58
+ end
59
+
56
60
  name, names, relation_block =
57
- if block.arity == 0
61
+ if args.size == 1
58
62
  DSL.new(*args, &block).call
59
63
  else
60
64
  [*args, block]
@@ -68,8 +72,8 @@ module ROM
68
72
  end
69
73
  end
70
74
  end
75
+ end
71
76
 
72
- plugins do
73
- register :view, Plugins::Relation::View, type: :relation
74
- end
77
+ ROM.plugins do
78
+ register :view, ROM::Plugins::Relation::View, type: :relation
75
79
  end
@@ -4,6 +4,6 @@ module ROM
4
4
  end
5
5
 
6
6
  class Repository < Gateway
7
- VERSION = '0.0.2'.freeze
7
+ VERSION = '0.1.0'.freeze
8
8
  end
9
9
  end
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.license = 'MIT'
17
17
 
18
18
  gem.add_runtime_dependency 'anima', '~> 0.2', '>= 0.2'
19
- gem.add_runtime_dependency 'rom', '~> 0.9.0.beta1'
19
+ gem.add_runtime_dependency 'rom', '~> 0.9', '>= 0.9.0'
20
20
  gem.add_runtime_dependency 'rom-support', '~> 0.1', '>= 0.1.0'
21
21
  gem.add_runtime_dependency 'rom-mapper', '~> 0.2', '>= 0.2.0'
22
22
 
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+
3
+ RSpec.describe 'Repository with multi-adapters setup' do
4
+ include_context 'database'
5
+
6
+ let(:setup) {
7
+ ROM.setup(default: [:sql, uri], memory: [:memory])
8
+ }
9
+
10
+ let(:users) { rom.relation(:sql_users) }
11
+ let(:tasks) { rom.relation(:memory_tasks) }
12
+
13
+ let(:repo) { Test::Repository.new(rom) }
14
+
15
+ before do
16
+ module Test
17
+ class Users < ROM::Relation[:sql]
18
+ dataset :users
19
+ register_as :sql_users
20
+ gateway :default
21
+ end
22
+
23
+ class Tasks < ROM::Relation[:memory]
24
+ dataset :tasks
25
+ register_as :memory_tasks
26
+ gateway :memory
27
+
28
+ use :view
29
+ use :key_inference
30
+
31
+ view(:base, [:user_id, :title]) do
32
+ project(:user_id, :title)
33
+ end
34
+
35
+ def for_users(users)
36
+ restrict(user_id: users.map { |u| u[:id] })
37
+ end
38
+ end
39
+
40
+ class Repository < ROM::Repository::Base
41
+ relations :sql_users, :memory_tasks
42
+
43
+ def users_with_tasks(id)
44
+ sql_users.where(id: id).combine_children(many: { tasks: memory_tasks })
45
+ end
46
+ end
47
+ end
48
+
49
+ user_id = setup.gateways[:default].dataset(:users).insert(name: 'Jane')
50
+ setup.gateways[:memory].dataset(:tasks).insert(user_id: user_id, title: 'Jane Task')
51
+ end
52
+
53
+ specify 'ᕕ⁞ ᵒ̌ 〜 ᵒ̌ ⁞ᕗ' do
54
+ user = repo.users_with_tasks(users.last[:id]).first
55
+
56
+ expect(user.name).to eql('Jane')
57
+
58
+ expect(user.tasks[0].user_id).to eql(user.id)
59
+ expect(user.tasks[0].title).to eql('Jane Task')
60
+ end
61
+ end
@@ -1,7 +1,8 @@
1
1
  RSpec.shared_context 'database' do
2
- let(:setup) { ROM.setup(:sql, 'postgres://localhost/rom') }
2
+ let(:setup) { ROM.setup(:sql, uri) }
3
3
  let(:conn) { setup.gateways[:default].connection }
4
4
  let(:rom) { setup.finalize }
5
+ let(:uri) { 'postgres://localhost/rom_repository' }
5
6
 
6
7
  before do
7
8
  [:tags, :tasks, :users].each { |table| conn.drop_table?(table) }
@@ -40,5 +40,15 @@ RSpec.describe 'SQL Relation extensions' do
40
40
 
41
41
  include_context 'valid view'
42
42
  end
43
+
44
+ context 'with multi-block when first block has args' do
45
+ it 'raises error' do
46
+ expect {
47
+ setup.relation(:users) do
48
+ view(:by_id) { |args| }
49
+ end
50
+ }.to raise_error(ArgumentError)
51
+ end
52
+ end
43
53
  end
44
54
  end
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: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-10 00:00:00.000000000 Z
11
+ date: 2015-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: anima
@@ -36,14 +36,20 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.9.0.beta1
39
+ version: '0.9'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.9.0
40
43
  type: :runtime
41
44
  prerelease: false
42
45
  version_requirements: !ruby/object:Gem::Requirement
43
46
  requirements:
44
47
  - - "~>"
45
48
  - !ruby/object:Gem::Version
46
- version: 0.9.0.beta1
49
+ version: '0.9'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.9.0
47
53
  - !ruby/object:Gem::Dependency
48
54
  name: rom-support
49
55
  requirement: !ruby/object:Gem::Requirement
@@ -145,6 +151,7 @@ files:
145
151
  - lib/rom/repository/version.rb
146
152
  - lib/rom/struct.rb
147
153
  - rom-repository.gemspec
154
+ - spec/integration/multi_adapter_spec.rb
148
155
  - spec/integration/repository_spec.rb
149
156
  - spec/shared/database.rb
150
157
  - spec/shared/relations.rb