mongo_adaptor 0.0.7 → 0.0.8

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.
@@ -9,33 +9,37 @@ class MongoAdaptor
9
9
  end
10
10
  end
11
11
 
12
- def initialize(name,klass)
12
+ def initialize name, klass
13
13
  @collection = self.class.db.collection name.to_s.downcase
14
14
  @klass = klass
15
15
  end
16
16
 
17
- def insert(model)
18
- @collection.insert( process(model), { :safe => true } )
17
+ def insert model
18
+ @collection.insert process(model), safe_mode
19
19
  end
20
- def upsert(model, query = { "_id" => model.id })
21
- @collection.update( query, { "$set" => process(model) }, { :safe => true, :upsert => true } )
20
+
21
+ def upsert model, query = { "_id" => model.id }
22
+ @collection.update query, set(process(model)), safe_mode.merge(upsert_mode true)
22
23
  end
23
- def update(model)
24
- @collection.update( { "_id" => model.id }, { "$set" => process(model) }, { :safe => true, :upsert => false } )
24
+
25
+ def update model, query = { "_id" => model.id }
26
+ @collection.update query, set(process(model)), safe_mode.merge(upsert_mode false)
25
27
  end
26
28
 
27
- def fetch(*args)
28
- @collection.find_one *(args + [{ :transformer => builder }])
29
+ def fetch selector = {}, opts = {}
30
+ @collection.find_one selector, opts.merge( :transformer => builder )
29
31
  end
30
- def remove(*args)
31
- @collection.remove *args
32
+
33
+ def remove selector = {}, opts = {}
34
+ @collection.remove selector, opts
32
35
  end
33
36
 
34
- def find(*args)
35
- @collection.find *(args + [{ :transformer => builder }])
37
+ def find selector = {}, opts = {}
38
+ @collection.find selector, opts.merge( :transformer => builder )
36
39
  end
37
40
 
38
41
  private
42
+
39
43
  def builder
40
44
  proc do |result|
41
45
  @klass.new.tap do |model|
@@ -46,9 +50,23 @@ class MongoAdaptor
46
50
  end
47
51
  end
48
52
  end
53
+
49
54
  def process(model)
50
55
  fields = {}
51
56
  model.each_pair { |field,value| fields[field] = value unless field == :id }
52
57
  fields
53
58
  end
59
+
60
+ def safe_mode
61
+ { :safe => true }
62
+ end
63
+
64
+ def upsert_mode level
65
+ { :upsert => level }
66
+ end
67
+
68
+ def set query
69
+ { "$set" => query }
70
+ end
71
+
54
72
  end
@@ -1,3 +1,3 @@
1
1
  class MongoAdaptor
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -14,7 +14,7 @@ describe 'adapting structs into mongo' do
14
14
  end
15
15
  end
16
16
 
17
- describe 'useing the adaptor' do
17
+ describe 'using the adaptor' do
18
18
  let(:klass) { Struct.new :name, :other, :members, :id }
19
19
  let(:adaptor) { MongoAdaptor.new 'test_collection', klass }
20
20
  let(:collection) { Mongo::Configure.current.load.collection 'test_collection' }
@@ -122,6 +122,9 @@ describe 'adapting structs into mongo' do
122
122
  it 'gets them all' do
123
123
  subject.map(&:other).should == [0,1,2]
124
124
  end
125
+ it 'will pass along options' do
126
+ expect { adaptor.find({ :name => 'My Model' },{ fields: { }}) }.to_not raise_error
127
+ end
125
128
  end
126
129
  end
127
130
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo_adaptor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-05 00:00:00.000000000 Z
12
+ date: 2013-05-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongo
@@ -122,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
122
  version: '0'
123
123
  segments:
124
124
  - 0
125
- hash: 2571098276566375901
125
+ hash: 1562466360637587669
126
126
  required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
@@ -131,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
131
  version: '0'
132
132
  segments:
133
133
  - 0
134
- hash: 2571098276566375901
134
+ hash: 1562466360637587669
135
135
  requirements: []
136
136
  rubyforge_project:
137
137
  rubygems_version: 1.8.25