plucky 0.6.0 → 0.6.1
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.
- data/lib/plucky/query.rb +17 -24
- data/lib/plucky/version.rb +1 -1
- data/spec/plucky/query_spec.rb +4 -6
- metadata +7 -12
data/lib/plucky/query.rb
CHANGED
@@ -65,7 +65,7 @@ module Plucky
|
|
65
65
|
docs
|
66
66
|
end
|
67
67
|
|
68
|
-
def find_each(opts={}
|
68
|
+
def find_each(opts={})
|
69
69
|
query = clone.amend(opts)
|
70
70
|
cursor = query.cursor
|
71
71
|
|
@@ -95,21 +95,15 @@ module Plucky
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def all(opts={})
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
def first(opts={})
|
102
|
-
find_one(opts)
|
98
|
+
[].tap do |docs|
|
99
|
+
find_each(opts) {|doc| docs << doc }
|
100
|
+
end
|
103
101
|
end
|
104
102
|
|
105
103
|
def last(opts={})
|
106
104
|
clone.amend(opts).reverse.find_one
|
107
105
|
end
|
108
106
|
|
109
|
-
def each(&block)
|
110
|
-
find_each(&block)
|
111
|
-
end
|
112
|
-
|
113
107
|
def remove(opts={}, driver_opts={})
|
114
108
|
query = clone.amend(opts)
|
115
109
|
query.collection.remove(query.criteria_hash, driver_opts)
|
@@ -121,10 +115,6 @@ module Plucky
|
|
121
115
|
cursor.count
|
122
116
|
end
|
123
117
|
|
124
|
-
def size
|
125
|
-
count
|
126
|
-
end
|
127
|
-
|
128
118
|
def distinct(key, opts = {})
|
129
119
|
query = clone.amend(opts)
|
130
120
|
query.collection.distinct(key, query.criteria_hash)
|
@@ -149,7 +139,9 @@ module Plucky
|
|
149
139
|
def reverse
|
150
140
|
clone.tap do |query|
|
151
141
|
sort = query[:sort]
|
152
|
-
|
142
|
+
if sort.nil?
|
143
|
+
query.options[:sort] = [[:_id, -1]]
|
144
|
+
else
|
153
145
|
query.options[:sort] = sort.map { |s| [s[0], -s[1]] }
|
154
146
|
end
|
155
147
|
end
|
@@ -158,30 +150,31 @@ module Plucky
|
|
158
150
|
def skip(count=nil)
|
159
151
|
clone.tap { |query| query.options[:skip] = count }
|
160
152
|
end
|
161
|
-
alias offset skip
|
162
153
|
|
163
154
|
def sort(*args)
|
164
155
|
clone.tap { |query| query.options[:sort] = *args }
|
165
156
|
end
|
166
|
-
alias order sort
|
167
157
|
|
168
158
|
def where(hash={})
|
169
159
|
clone.tap { |query| query.criteria.merge!(CriteriaHash.new(hash)) }
|
170
160
|
end
|
171
|
-
alias filter where
|
172
161
|
|
173
162
|
def empty?
|
174
|
-
count
|
163
|
+
count == 0
|
175
164
|
end
|
176
165
|
|
177
166
|
def exists?(query_options={})
|
178
|
-
!
|
167
|
+
!only(:_id).find_one(query_options).nil?
|
179
168
|
end
|
180
|
-
alias :exist? :exists?
|
181
169
|
|
182
|
-
|
183
|
-
|
184
|
-
|
170
|
+
alias_method :each, :find_each
|
171
|
+
alias_method :first, :find_one
|
172
|
+
alias_method :size, :count
|
173
|
+
alias_method :offset, :skip
|
174
|
+
alias_method :order, :sort
|
175
|
+
alias_method :exist?, :exists?
|
176
|
+
alias_method :filter, :where
|
177
|
+
alias_method :to_a, :all
|
185
178
|
end
|
186
179
|
include DSL
|
187
180
|
|
data/lib/plucky/version.rb
CHANGED
data/spec/plucky/query_spec.rb
CHANGED
@@ -249,6 +249,10 @@ describe Plucky::Query do
|
|
249
249
|
described_class.new(@collection).last(:age.lte => 26, :order => :name.desc).should == @chris
|
250
250
|
end
|
251
251
|
|
252
|
+
it "uses _id if a sort key is not specified" do
|
253
|
+
described_class.new(@collection).last.should == [@steve, @chris, @john].sort {|a, b| a["_id"] <=> b["_id"] }.last
|
254
|
+
end
|
255
|
+
|
252
256
|
it "does not modify original query object" do
|
253
257
|
query = described_class.new(@collection)
|
254
258
|
query.last(:name => 'Steve')
|
@@ -665,12 +669,6 @@ describe Plucky::Query do
|
|
665
669
|
query.each.methods.map(&:to_sym).include?(:group_by).should be(true)
|
666
670
|
query.each.next.should be_instance_of(BSON::OrderedHash)
|
667
671
|
end
|
668
|
-
|
669
|
-
it "uses #find_each" do
|
670
|
-
query = described_class.new(@collection)
|
671
|
-
query.should_receive(:find_each)
|
672
|
-
query.each
|
673
|
-
end
|
674
672
|
end
|
675
673
|
|
676
674
|
context "enumerables" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plucky
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongo
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70345461736220 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,12 +21,7 @@ dependencies:
|
|
21
21
|
version: '1.5'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '1.5'
|
24
|
+
version_requirements: *70345461736220
|
30
25
|
description:
|
31
26
|
email:
|
32
27
|
- nunemaker@gmail.com
|
@@ -96,7 +91,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
91
|
version: '0'
|
97
92
|
segments:
|
98
93
|
- 0
|
99
|
-
hash:
|
94
|
+
hash: 3792223314074496611
|
100
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
96
|
none: false
|
102
97
|
requirements:
|
@@ -105,10 +100,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
100
|
version: '0'
|
106
101
|
segments:
|
107
102
|
- 0
|
108
|
-
hash:
|
103
|
+
hash: 3792223314074496611
|
109
104
|
requirements: []
|
110
105
|
rubyforge_project:
|
111
|
-
rubygems_version: 1.8.
|
106
|
+
rubygems_version: 1.8.10
|
112
107
|
signing_key:
|
113
108
|
specification_version: 3
|
114
109
|
summary: Thin layer over the ruby driver that allows you to quickly grab hold of your
|