populate-me 0.0.18 → 0.0.19

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.
@@ -24,13 +24,16 @@ module PopulateMe
24
24
  def human_name; self.name.gsub(/([A-Z])/, ' \1')[1..-1]; end
25
25
  def human_plural_name; human_name+'s'; end
26
26
  def collection; db[self.name]; end
27
- def ref(id)
27
+ def correct_id_class(id)
28
28
  if id.is_a?(String)&&BSON::ObjectId.legal?(id)
29
- id = BSON::ObjectId.from_string(id)
29
+ return BSON::ObjectId.from_string(id)
30
30
  elsif !id.is_a?(BSON::ObjectId)
31
- id = ''
31
+ return ''
32
32
  end
33
- {'_id'=>id}
33
+ id
34
+ end
35
+ def ref(id)
36
+ {'_id' => (id.kind_of?(Array) ? {'$in'=> id.map{|i|correct_id_class(i)} } : correct_id_class(id)) }
34
37
  end
35
38
  def find(selector={},opts={})
36
39
  selector.update(opts.delete(:selector)||{})
@@ -65,6 +68,12 @@ module PopulateMe
65
68
  def get(id, opts={}); doc = collection.find_one(ref(id), opts); doc.nil? ? nil : self.new(doc); end
66
69
  def delete(id); collection.remove(ref(id)); end
67
70
 
71
+ def get_multiple(ids, opts={})
72
+ ids.map!{|id|correct_id_class(id)}
73
+ sort_proc = proc{ |a,b| ids.index(a['_id'])<=>ids.index(b['_id']) }
74
+ self.find(ref(ids), opts).to_a.sort(&sort_proc)
75
+ end
76
+
68
77
  def is_unique(doc={})
69
78
  return unless collection.count==0
70
79
  self.new(doc).save
@@ -133,10 +142,7 @@ module PopulateMe
133
142
  klass = resolve_class(k)
134
143
  key = klass.foreign_key_name(true)
135
144
  end
136
- ids = (@doc[key]||[]).map{|i| BSON::ObjectId.from_string(i) }
137
- selector = {'_id'=>{'$in'=>ids}}
138
- sort_proc = proc{ |a,b| ids.index(a['_id'])<=>ids.index(b['_id']) }
139
- klass.find(selector, opts).to_a.sort(&sort_proc)
145
+ klass.get_multiple((@doc[key]||[]), opts)
140
146
  end
141
147
  def first_slot_child(k, opts={})
142
148
  if k.kind_of?(String)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'populate-me'
3
- s.version = "0.0.18"
3
+ s.version = "0.0.19"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.summary = "ALPHA !!! Populate Me is relatively complete but simple CMS"
6
6
  s.description = "ALPHA !!! Populate Me is relatively complete but simple CMS. It includes a Rack middleware for putting in your Rack stack, and a bespoke MongoDB ODM. But Populate Me is not really finished yet."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: populate-me
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.19
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-10-21 00:00:00.000000000 Z
12
+ date: 2013-12-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack-golem