will-couchrest 0.33 → 0.33.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -28,7 +28,7 @@ require 'couchrest/monkeypatches'
28
28
 
29
29
  # = CouchDB, close to the metal
30
30
  module CouchRest
31
- VERSION = '0.33' unless self.const_defined?("VERSION")
31
+ VERSION = '0.33.1' unless self.const_defined?("VERSION")
32
32
 
33
33
  autoload :Server, 'couchrest/core/server'
34
34
  autoload :Database, 'couchrest/core/database'
@@ -59,6 +59,28 @@ module CouchRest
59
59
  end
60
60
  end
61
61
 
62
+ # Load several documents from the database by ids
63
+ # No exceptions will be raised if the document isn't found
64
+ #
65
+ # ==== Returns
66
+ # [Objects]:: if the document was found
67
+ # documents that are not found are nil
68
+ # or
69
+ # Nil:: if there was an error
70
+ #
71
+ # === Parameters
72
+ # ids<Array> of <String, Integer>:: Document IDs
73
+ # db<Database>:: optional option to pass a custom database to use
74
+ def bulk_get(ids, db = database)
75
+ begin
76
+ rows = db.bulk_load(ids)['rows']
77
+ docs = rows.map{ |row| row['doc'] }
78
+ rescue
79
+ nil
80
+ else
81
+ docs.map{|doc| new(doc) if doc }
82
+ end
83
+ end
62
84
  # Load a document from the database by id
63
85
  # An exception will be raised if the document isn't found
64
86
  #
@@ -226,7 +226,36 @@ describe "ExtendedDocument" do
226
226
  lambda{foundart = Article.get!('matt aimonetti')}.should raise_error
227
227
  end
228
228
  end
229
-
229
+
230
+ describe "bulk getting several models" do
231
+ before(:all) do
232
+ @art1 = Article.new(:title => 'All About Getting')
233
+ @art1.save
234
+
235
+ @art2 = Article.new(:title => 'Even More About Getting')
236
+ @art2.save
237
+
238
+ @art3 = Article.new(:title => 'Not Really About Getting')
239
+ @art3.save
240
+ end
241
+
242
+ it "should load and instantiate all" do
243
+ foundarts = Article.bulk_get [@art1.id, @art2.id, @art3.id]
244
+
245
+ foundarts[0].title.should == @art1.title
246
+ foundarts[1].title.should == @art2.title
247
+ foundarts[2].title.should == @art3.title
248
+ end
249
+
250
+ it "should return nil if `get` is used and the document doesn't exist" do
251
+ foundarts = Article.bulk_get [@art1.id, "bad id", @art3.id]
252
+
253
+ foundarts[0].title.should == @art1.title
254
+ foundarts[1].should be_nil
255
+ foundarts[2].title.should == @art3.title
256
+ end
257
+ end
258
+
230
259
  describe "getting a model with a subobjects array" do
231
260
  before(:all) do
232
261
  course_doc = {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: will-couchrest
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.33"
4
+ version: 0.33.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - J. Chris Anderson