rom-mongo 0.0.2 → 0.0.3
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/.rubocop.yml +20 -0
- data/CHANGELOG.md +13 -1
- data/Rakefile +7 -0
- data/lib/rom/mongo/adapter.rb +33 -5
- data/lib/rom/mongo/commands.rb +0 -7
- data/lib/rom/mongo/version.rb +1 -1
- data/rom-mongo.gemspec +3 -2
- data/spec/integration/adapter_spec.rb +26 -6
- metadata +37 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd3c391e9bab1f7f5d67b1ac3dcdaf5c0b2cc779
|
4
|
+
data.tar.gz: 5fbfefe474f557aa8974b0573f38817a49882ab9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 080fd587154820d5b46472ff4ec995f6abb72af39736170ed3e878c7063b247a0aa00de2e99207994074cb21478c1c8d47b9e7bb8bbfa4582759355e8f016f65
|
7
|
+
data.tar.gz: 6c7600f8d3deb30b42c49b5ca04d46a083eeeff733b0356f181e08a84e34d0b4d366fd5aea1544b79ec40f8c2cc35e3261216830c73cac3b6df9f12c5232ba5f
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# Documentation checked by Inch CI
|
2
|
+
Style/Documentation:
|
3
|
+
Enabled: false
|
4
|
+
|
5
|
+
# This is a shim file for those who require 'rom-mongo'
|
6
|
+
Style/FileName:
|
7
|
+
Exclude:
|
8
|
+
- lib/rom-mongo.rb
|
9
|
+
|
10
|
+
# Even a single escaped slash can be confusing
|
11
|
+
Style/RegexpLiteral:
|
12
|
+
MaxSlashes: 0
|
13
|
+
|
14
|
+
# Accept both single and double quotes
|
15
|
+
Style/StringLiterals:
|
16
|
+
Enabled: false
|
17
|
+
|
18
|
+
# %w makes more sense with 4+ elements
|
19
|
+
Style/WordArray:
|
20
|
+
MinSize: 3
|
data/CHANGELOG.md
CHANGED
@@ -1,10 +1,22 @@
|
|
1
|
+
## v0.0.3 2014-12-31
|
2
|
+
|
3
|
+
### Added
|
4
|
+
|
5
|
+
* Support for header (solnic)
|
6
|
+
|
7
|
+
### Changed
|
8
|
+
|
9
|
+
* Updated to work with latest ROM (solnic)
|
10
|
+
|
11
|
+
[Compare v0.0.2...v0.0.3](https://github.com/rom-rb/rom-mongo/compare/v0.0.1...v0.0.3)
|
12
|
+
|
1
13
|
## v0.0.2 2014-12-06
|
2
14
|
|
3
15
|
### Added
|
4
16
|
|
5
17
|
* Command API (solnic)
|
6
18
|
|
7
|
-
[Compare v0.0.1...v0.0.2](https://github.com/rom-rb/rom-
|
19
|
+
[Compare v0.0.1...v0.0.2](https://github.com/rom-rb/rom-mongo/compare/v0.0.1...v0.0.2)
|
8
20
|
|
9
21
|
## v0.0.1 2014-11-25
|
10
22
|
|
data/Rakefile
CHANGED
data/lib/rom/mongo/adapter.rb
CHANGED
@@ -1,28 +1,55 @@
|
|
1
1
|
module ROM
|
2
2
|
module Mongo
|
3
|
-
|
4
3
|
class Adapter < ROM::Adapter
|
5
|
-
|
6
4
|
def self.schemes
|
7
5
|
[:mongo]
|
8
6
|
end
|
9
7
|
|
8
|
+
module RelationInclusion
|
9
|
+
def header
|
10
|
+
dataset.header
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
10
14
|
class Dataset
|
11
15
|
include Charlatan.new(:collection, kind: Moped::Query)
|
16
|
+
include Equalizer.new(:collection, :header)
|
17
|
+
|
18
|
+
alias_method :query, :collection
|
19
|
+
|
20
|
+
def initialize(collection, header)
|
21
|
+
super
|
22
|
+
@header = header unless query?
|
23
|
+
end
|
24
|
+
|
25
|
+
def header
|
26
|
+
query? ? query.operation.fields : @header
|
27
|
+
end
|
12
28
|
|
13
29
|
def each(&block)
|
14
30
|
collection.find.each(&block)
|
15
31
|
end
|
32
|
+
|
33
|
+
def query?
|
34
|
+
collection.is_a?(Moped::Query)
|
35
|
+
end
|
16
36
|
end
|
17
37
|
|
38
|
+
attr_reader :collections
|
39
|
+
|
18
40
|
def initialize(*args)
|
19
41
|
super
|
20
42
|
@connection = Moped::Session.new(["#{uri.host}:#{uri.port}"])
|
21
43
|
@connection.use uri.path.gsub('/', '')
|
44
|
+
@collections = {}
|
22
45
|
end
|
23
46
|
|
24
47
|
def [](name)
|
25
|
-
|
48
|
+
collections.fetch(name)
|
49
|
+
end
|
50
|
+
|
51
|
+
def dataset(name, header)
|
52
|
+
collections[name] = Dataset.new(connection[name], header)
|
26
53
|
end
|
27
54
|
|
28
55
|
def dataset?(name)
|
@@ -33,8 +60,9 @@ module ROM
|
|
33
60
|
Mongo::Commands
|
34
61
|
end
|
35
62
|
|
36
|
-
|
63
|
+
def extend_relation_class(klass)
|
64
|
+
klass.send(:include, RelationInclusion)
|
65
|
+
end
|
37
66
|
end
|
38
|
-
|
39
67
|
end
|
40
68
|
end
|
data/lib/rom/mongo/commands.rb
CHANGED
@@ -2,9 +2,7 @@ require 'bson'
|
|
2
2
|
|
3
3
|
module ROM
|
4
4
|
module Mongo
|
5
|
-
|
6
5
|
module Commands
|
7
|
-
|
8
6
|
class Create < ROM::Commands::Create
|
9
7
|
alias_method :collection, :relation
|
10
8
|
|
@@ -12,7 +10,6 @@ module ROM
|
|
12
10
|
collection.insert(document)
|
13
11
|
[document]
|
14
12
|
end
|
15
|
-
|
16
13
|
end
|
17
14
|
|
18
15
|
class Update < ROM::Commands::Update
|
@@ -23,19 +20,15 @@ module ROM
|
|
23
20
|
collection.update_all('$set' => attributes)
|
24
21
|
collection.to_a
|
25
22
|
end
|
26
|
-
|
27
23
|
end
|
28
24
|
|
29
25
|
class Delete < ROM::Commands::Delete
|
30
|
-
|
31
26
|
def execute
|
32
27
|
removed = target.to_a
|
33
28
|
target.remove_all
|
34
29
|
removed
|
35
30
|
end
|
36
|
-
|
37
31
|
end
|
38
|
-
|
39
32
|
end
|
40
33
|
end
|
41
34
|
end
|
data/lib/rom/mongo/version.rb
CHANGED
data/rom-mongo.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = ROM::Mongo::VERSION.dup
|
9
9
|
spec.authors = ["Piotr Solnica"]
|
10
10
|
spec.email = ["piotr.solnica@gmail.com"]
|
11
|
-
spec.summary =
|
11
|
+
spec.summary = 'MongoDB support for Ruby Object Mapper'
|
12
12
|
spec.description = spec.summary
|
13
13
|
spec.homepage = ""
|
14
14
|
spec.license = "MIT"
|
@@ -19,8 +19,9 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_runtime_dependency "moped"
|
22
|
-
spec.add_runtime_dependency "rom", "~> 0.
|
22
|
+
spec.add_runtime_dependency "rom", "~> 0.5", ">= 0.5.0"
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler"
|
25
25
|
spec.add_development_dependency "rake"
|
26
|
+
spec.add_development_dependency "rubocop", "~> 0.28.0"
|
26
27
|
end
|
@@ -26,6 +26,10 @@ describe 'Mongo adapter' do
|
|
26
26
|
def by_name(name)
|
27
27
|
find(name: name)
|
28
28
|
end
|
29
|
+
|
30
|
+
def all
|
31
|
+
find
|
32
|
+
end
|
29
33
|
end
|
30
34
|
|
31
35
|
setup.commands(:users) do
|
@@ -60,7 +64,8 @@ describe 'Mongo adapter' do
|
|
60
64
|
it 'returns mapped object' do
|
61
65
|
jane = rom.read(:users).by_name('Jane').to_a.first
|
62
66
|
|
63
|
-
expect(jane.id)
|
67
|
+
expect(jane.id)
|
68
|
+
.to eql(rom.schema.users.find(name: 'Jane').one['_id'].to_s)
|
64
69
|
expect(jane.name).to eql('Jane')
|
65
70
|
expect(jane.email).to eql('jane@doe.org')
|
66
71
|
end
|
@@ -76,6 +81,16 @@ describe 'Mongo adapter' do
|
|
76
81
|
end
|
77
82
|
end
|
78
83
|
|
84
|
+
describe 'dataset#header' do
|
85
|
+
it 'returns the header defined in the schema' do
|
86
|
+
expect(rom.relations.users.header).to eql(['_id', 'name', 'email'])
|
87
|
+
|
88
|
+
users = rom.relations.users.find('name' => 'Jane').select(['email'])
|
89
|
+
|
90
|
+
expect(users.header).to eql(['email'])
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
79
94
|
describe 'commands' do
|
80
95
|
let(:commands) { rom.command(:users) }
|
81
96
|
|
@@ -83,9 +98,12 @@ describe 'Mongo adapter' do
|
|
83
98
|
it 'inserts a document into collection' do
|
84
99
|
id = BSON::ObjectId.new
|
85
100
|
|
86
|
-
result = commands.try
|
101
|
+
result = commands.try do
|
102
|
+
create(_id: id, name: 'joe', email: 'joe@doe.org')
|
103
|
+
end
|
87
104
|
|
88
|
-
expect(result)
|
105
|
+
expect(result)
|
106
|
+
.to match_array([{ _id: id, name: 'joe', email: 'joe@doe.org' }])
|
89
107
|
end
|
90
108
|
end
|
91
109
|
|
@@ -93,7 +111,9 @@ describe 'Mongo adapter' do
|
|
93
111
|
it 'updates a document in the collection' do
|
94
112
|
jane = rom.read(:users).by_name('Jane').first
|
95
113
|
|
96
|
-
result = commands.try
|
114
|
+
result = commands.try do
|
115
|
+
update(:by_name, 'Jane').set(email: 'jane.doe@test.com')
|
116
|
+
end
|
97
117
|
|
98
118
|
expect(result).to match_array(
|
99
119
|
[{ '_id' => BSON::ObjectId.from_string(jane.id),
|
@@ -108,7 +128,7 @@ describe 'Mongo adapter' do
|
|
108
128
|
jane = rom.read(:users).by_name('Jane').first
|
109
129
|
joe = rom.read(:users).by_name('Joe').first
|
110
130
|
|
111
|
-
result = commands.try { delete(:by_name, 'Joe')
|
131
|
+
result = commands.try { delete(:by_name, 'Joe') }
|
112
132
|
|
113
133
|
expect(result).to match_array(
|
114
134
|
[{ '_id' => BSON::ObjectId.from_string(joe.id),
|
@@ -116,7 +136,7 @@ describe 'Mongo adapter' do
|
|
116
136
|
'email' => 'joe@doe.org' }]
|
117
137
|
)
|
118
138
|
|
119
|
-
expect(rom.read(:users).
|
139
|
+
expect(rom.read(:users).all).to match_array([jane])
|
120
140
|
end
|
121
141
|
end
|
122
142
|
end
|
metadata
CHANGED
@@ -1,77 +1,91 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rom-mongo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: moped
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rom
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
34
|
-
- -
|
33
|
+
version: '0.5'
|
34
|
+
- - ">="
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: 0.
|
36
|
+
version: 0.5.0
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- - ~>
|
41
|
+
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: '0.
|
44
|
-
- -
|
43
|
+
version: '0.5'
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 0.
|
46
|
+
version: 0.5.0
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- -
|
58
|
+
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '0'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: rake
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- -
|
65
|
+
- - ">="
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '0'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- -
|
72
|
+
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rubocop
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 0.28.0
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 0.28.0
|
75
89
|
description: MongoDB support for Ruby Object Mapper
|
76
90
|
email:
|
77
91
|
- piotr.solnica@gmail.com
|
@@ -79,9 +93,10 @@ executables: []
|
|
79
93
|
extensions: []
|
80
94
|
extra_rdoc_files: []
|
81
95
|
files:
|
82
|
-
- .gitignore
|
83
|
-
- .rspec
|
84
|
-
- .
|
96
|
+
- ".gitignore"
|
97
|
+
- ".rspec"
|
98
|
+
- ".rubocop.yml"
|
99
|
+
- ".travis.yml"
|
85
100
|
- CHANGELOG.md
|
86
101
|
- Gemfile
|
87
102
|
- LICENSE.txt
|
@@ -105,21 +120,20 @@ require_paths:
|
|
105
120
|
- lib
|
106
121
|
required_ruby_version: !ruby/object:Gem::Requirement
|
107
122
|
requirements:
|
108
|
-
- -
|
123
|
+
- - ">="
|
109
124
|
- !ruby/object:Gem::Version
|
110
125
|
version: '0'
|
111
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
127
|
requirements:
|
113
|
-
- -
|
128
|
+
- - ">="
|
114
129
|
- !ruby/object:Gem::Version
|
115
130
|
version: '0'
|
116
131
|
requirements: []
|
117
132
|
rubyforge_project:
|
118
|
-
rubygems_version: 2.
|
133
|
+
rubygems_version: 2.4.5
|
119
134
|
signing_key:
|
120
135
|
specification_version: 4
|
121
136
|
summary: MongoDB support for Ruby Object Mapper
|
122
137
|
test_files:
|
123
138
|
- spec/integration/adapter_spec.rb
|
124
139
|
- spec/spec_helper.rb
|
125
|
-
has_rdoc:
|