mongoid 0.9.12 → 0.10.0
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/VERSION +1 -1
- data/lib/mongoid.rb +1 -0
- data/lib/mongoid/complex_criterion.rb +9 -0
- data/lib/mongoid/criteria.rb +1 -1
- data/lib/mongoid/extensions.rb +2 -0
- data/lib/mongoid/extensions/hash/criteria_helpers.rb +19 -0
- data/lib/mongoid/extensions/symbol/inflections.rb +7 -0
- data/mongoid.gemspec +8 -2
- data/spec/integration/mongoid/criteria_spec.rb +109 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/mongoid/criteria_spec.rb +17 -3
- data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +17 -0
- data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +10 -0
- metadata +8 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.10.0
|
data/lib/mongoid.rb
CHANGED
@@ -40,6 +40,7 @@ require "mongoid/associations"
|
|
40
40
|
require "mongoid/associations/options"
|
41
41
|
require "mongoid/attributes"
|
42
42
|
require "mongoid/commands"
|
43
|
+
require "mongoid/complex_criterion"
|
43
44
|
require "mongoid/criteria"
|
44
45
|
require "mongoid/dynamic_finder"
|
45
46
|
require "mongoid/extensions"
|
data/lib/mongoid/criteria.rb
CHANGED
data/lib/mongoid/extensions.rb
CHANGED
@@ -10,6 +10,7 @@ require "mongoid/extensions/float/conversions"
|
|
10
10
|
require "mongoid/extensions/hash/accessors"
|
11
11
|
require "mongoid/extensions/hash/assimilation"
|
12
12
|
require "mongoid/extensions/hash/conversions"
|
13
|
+
require "mongoid/extensions/hash/criteria_helpers"
|
13
14
|
require "mongoid/extensions/integer/conversions"
|
14
15
|
require "mongoid/extensions/object/conversions"
|
15
16
|
require "mongoid/extensions/string/conversions"
|
@@ -44,6 +45,7 @@ class Hash #:nodoc
|
|
44
45
|
include Mongoid::Extensions::Hash::Accessors
|
45
46
|
include Mongoid::Extensions::Hash::Assimilation
|
46
47
|
extend Mongoid::Extensions::Hash::Conversions
|
48
|
+
include Mongoid::Extensions::Hash::CriteriaHelpers
|
47
49
|
end
|
48
50
|
|
49
51
|
class Integer #:nodoc
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Mongoid #:nodoc:
|
2
|
+
module Extensions #:nodoc:
|
3
|
+
module Hash #:nodoc:
|
4
|
+
module CriteriaHelpers #:nodoc:
|
5
|
+
def expand_complex_criteria
|
6
|
+
hsh = {}
|
7
|
+
self.each_pair do |k,v|
|
8
|
+
if k.class == Mongoid::ComplexCriterion
|
9
|
+
hsh[k.key] = {"$#{k.operator}" => v}
|
10
|
+
else
|
11
|
+
hsh[k] = v
|
12
|
+
end
|
13
|
+
end
|
14
|
+
hsh
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -23,6 +23,13 @@ module Mongoid #:nodoc:
|
|
23
23
|
to_s.plural?
|
24
24
|
end
|
25
25
|
|
26
|
+
["gt", "lt", "gte", "lte", "ne", "in", "nin", "mod", "all", "size", "exists"].each do |oper|
|
27
|
+
class_eval <<-OPERATORS
|
28
|
+
def #{oper}
|
29
|
+
ComplexCriterion.new(:key => self, :operator => "#{oper}")
|
30
|
+
end
|
31
|
+
OPERATORS
|
32
|
+
end
|
26
33
|
end
|
27
34
|
end
|
28
35
|
end
|
data/mongoid.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mongoid}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.10.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Durran Jordan"]
|
12
|
-
s.date = %q{2009-12-
|
12
|
+
s.date = %q{2009-12-24}
|
13
13
|
s.email = %q{durran@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.textile"
|
@@ -39,6 +39,7 @@ Gem::Specification.new do |s|
|
|
39
39
|
"lib/mongoid/commands/destroy.rb",
|
40
40
|
"lib/mongoid/commands/destroy_all.rb",
|
41
41
|
"lib/mongoid/commands/save.rb",
|
42
|
+
"lib/mongoid/complex_criterion.rb",
|
42
43
|
"lib/mongoid/criteria.rb",
|
43
44
|
"lib/mongoid/document.rb",
|
44
45
|
"lib/mongoid/dynamic_finder.rb",
|
@@ -55,6 +56,7 @@ Gem::Specification.new do |s|
|
|
55
56
|
"lib/mongoid/extensions/hash/accessors.rb",
|
56
57
|
"lib/mongoid/extensions/hash/assimilation.rb",
|
57
58
|
"lib/mongoid/extensions/hash/conversions.rb",
|
59
|
+
"lib/mongoid/extensions/hash/criteria_helpers.rb",
|
58
60
|
"lib/mongoid/extensions/integer/conversions.rb",
|
59
61
|
"lib/mongoid/extensions/object/casting.rb",
|
60
62
|
"lib/mongoid/extensions/object/conversions.rb",
|
@@ -69,6 +71,7 @@ Gem::Specification.new do |s|
|
|
69
71
|
"mongoid.gemspec",
|
70
72
|
"perf/benchmark.rb",
|
71
73
|
"spec/integration/mongoid/associations_spec.rb",
|
74
|
+
"spec/integration/mongoid/criteria_spec.rb",
|
72
75
|
"spec/integration/mongoid/document_spec.rb",
|
73
76
|
"spec/integration/mongoid/finders_spec.rb",
|
74
77
|
"spec/spec.opts",
|
@@ -104,6 +107,7 @@ Gem::Specification.new do |s|
|
|
104
107
|
"spec/unit/mongoid/extensions/hash/accessors_spec.rb",
|
105
108
|
"spec/unit/mongoid/extensions/hash/assimilation_spec.rb",
|
106
109
|
"spec/unit/mongoid/extensions/hash/conversions_spec.rb",
|
110
|
+
"spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb",
|
107
111
|
"spec/unit/mongoid/extensions/integer/conversions_spec.rb",
|
108
112
|
"spec/unit/mongoid/extensions/object/conversions_spec.rb",
|
109
113
|
"spec/unit/mongoid/extensions/string/conversions_spec.rb",
|
@@ -123,6 +127,7 @@ Gem::Specification.new do |s|
|
|
123
127
|
s.summary = %q{ODM framework for MongoDB}
|
124
128
|
s.test_files = [
|
125
129
|
"spec/integration/mongoid/associations_spec.rb",
|
130
|
+
"spec/integration/mongoid/criteria_spec.rb",
|
126
131
|
"spec/integration/mongoid/document_spec.rb",
|
127
132
|
"spec/integration/mongoid/finders_spec.rb",
|
128
133
|
"spec/spec_helper.rb",
|
@@ -157,6 +162,7 @@ Gem::Specification.new do |s|
|
|
157
162
|
"spec/unit/mongoid/extensions/hash/accessors_spec.rb",
|
158
163
|
"spec/unit/mongoid/extensions/hash/assimilation_spec.rb",
|
159
164
|
"spec/unit/mongoid/extensions/hash/conversions_spec.rb",
|
165
|
+
"spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb",
|
160
166
|
"spec/unit/mongoid/extensions/integer/conversions_spec.rb",
|
161
167
|
"spec/unit/mongoid/extensions/object/conversions_spec.rb",
|
162
168
|
"spec/unit/mongoid/extensions/string/conversions_spec.rb",
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Mongoid::Criteria do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@person = Person.create(:title => "Sir", :age => 33, :aliases => ["D", "Durran"])
|
7
|
+
end
|
8
|
+
|
9
|
+
after do
|
10
|
+
Person.delete_all
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#where" do
|
14
|
+
|
15
|
+
context "with complex criterion" do
|
16
|
+
|
17
|
+
context "#all" do
|
18
|
+
|
19
|
+
it "returns those matching an all clause" do
|
20
|
+
Person.criteria.where(:title.all => ["Sir"]).should == [@person]
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
context "#exists" do
|
26
|
+
|
27
|
+
it "returns those matching an exists clause" do
|
28
|
+
Person.criteria.where(:title.exists => true).should == [@person]
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
context "#gt" do
|
34
|
+
|
35
|
+
it "returns those matching a gt clause" do
|
36
|
+
Person.criteria.where(:age.gt => 30).should == [@person]
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
context "#gte" do
|
42
|
+
|
43
|
+
it "returns those matching a gte clause" do
|
44
|
+
Person.criteria.where(:age.gte => 33).should == [@person]
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
context "#in" do
|
50
|
+
|
51
|
+
it "returns those matching an in clause" do
|
52
|
+
Person.criteria.where(:title.in => ["Sir", "Madam"]).should == [@person]
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
context "#lt" do
|
58
|
+
|
59
|
+
it "returns those matching a lt clause" do
|
60
|
+
Person.criteria.where(:age.lt => 34).should == [@person]
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
context "#lte" do
|
66
|
+
|
67
|
+
it "returns those matching a lte clause" do
|
68
|
+
Person.criteria.where(:age.lte => 33).should == [@person]
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
context "#mod" do
|
74
|
+
|
75
|
+
it "returns those matching a mod clause" do
|
76
|
+
Person.criteria.where(:age.lte => 33).should == [@person]
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
context "#ne" do
|
82
|
+
|
83
|
+
it "returns those matching a ne clause" do
|
84
|
+
Person.criteria.where(:age.ne => 50).should == [@person]
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
context "#nin" do
|
90
|
+
|
91
|
+
it "returns those matching a nin clause" do
|
92
|
+
Person.criteria.where(:title.nin => ["Esquire", "Congressman"]).should == [@person]
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
context "#size" do
|
98
|
+
|
99
|
+
it "returns those matching a size clause" do
|
100
|
+
Person.criteria.where(:aliases.size => 2).should == [@person]
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -885,9 +885,23 @@ describe Mongoid::Criteria do
|
|
885
885
|
|
886
886
|
context "when provided a hash" do
|
887
887
|
|
888
|
-
|
889
|
-
|
890
|
-
|
888
|
+
context "with simple hash keys" do
|
889
|
+
|
890
|
+
it "adds the clause to the selector" do
|
891
|
+
@criteria.where(:title => "Title", :text => "Text")
|
892
|
+
@criteria.selector.should == { :title => "Title", :text => "Text" }
|
893
|
+
end
|
894
|
+
|
895
|
+
end
|
896
|
+
|
897
|
+
context "with complex hash keys" do
|
898
|
+
|
899
|
+
it "adds the correct clause to the selector" do
|
900
|
+
dob = 40.years.ago
|
901
|
+
@criteria.where(:age.gt => 40, :title => "Title", :dob.lt => dob)
|
902
|
+
@criteria.selector.should == {:age => {"$gt" => 40}, :title => "Title", :dob => {"$lt" => dob}}
|
903
|
+
end
|
904
|
+
|
891
905
|
end
|
892
906
|
|
893
907
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Mongoid::Extensions::Hash::CriteriaHelpers do
|
4
|
+
|
5
|
+
describe "#expand_complex_criteria" do
|
6
|
+
|
7
|
+
before do
|
8
|
+
@hash = {:age.gt => 40, :title => "Title"}
|
9
|
+
end
|
10
|
+
|
11
|
+
it "expands complex criteria to form a valid `where` hash" do
|
12
|
+
@hash.expand_complex_criteria.should == {:age => {"$gt" => 40}, :title => "Title"}
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Durran Jordan
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-24 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- lib/mongoid/commands/destroy.rb
|
116
116
|
- lib/mongoid/commands/destroy_all.rb
|
117
117
|
- lib/mongoid/commands/save.rb
|
118
|
+
- lib/mongoid/complex_criterion.rb
|
118
119
|
- lib/mongoid/criteria.rb
|
119
120
|
- lib/mongoid/document.rb
|
120
121
|
- lib/mongoid/dynamic_finder.rb
|
@@ -131,6 +132,7 @@ files:
|
|
131
132
|
- lib/mongoid/extensions/hash/accessors.rb
|
132
133
|
- lib/mongoid/extensions/hash/assimilation.rb
|
133
134
|
- lib/mongoid/extensions/hash/conversions.rb
|
135
|
+
- lib/mongoid/extensions/hash/criteria_helpers.rb
|
134
136
|
- lib/mongoid/extensions/integer/conversions.rb
|
135
137
|
- lib/mongoid/extensions/object/casting.rb
|
136
138
|
- lib/mongoid/extensions/object/conversions.rb
|
@@ -145,6 +147,7 @@ files:
|
|
145
147
|
- mongoid.gemspec
|
146
148
|
- perf/benchmark.rb
|
147
149
|
- spec/integration/mongoid/associations_spec.rb
|
150
|
+
- spec/integration/mongoid/criteria_spec.rb
|
148
151
|
- spec/integration/mongoid/document_spec.rb
|
149
152
|
- spec/integration/mongoid/finders_spec.rb
|
150
153
|
- spec/spec.opts
|
@@ -180,6 +183,7 @@ files:
|
|
180
183
|
- spec/unit/mongoid/extensions/hash/accessors_spec.rb
|
181
184
|
- spec/unit/mongoid/extensions/hash/assimilation_spec.rb
|
182
185
|
- spec/unit/mongoid/extensions/hash/conversions_spec.rb
|
186
|
+
- spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb
|
183
187
|
- spec/unit/mongoid/extensions/integer/conversions_spec.rb
|
184
188
|
- spec/unit/mongoid/extensions/object/conversions_spec.rb
|
185
189
|
- spec/unit/mongoid/extensions/string/conversions_spec.rb
|
@@ -221,6 +225,7 @@ specification_version: 3
|
|
221
225
|
summary: ODM framework for MongoDB
|
222
226
|
test_files:
|
223
227
|
- spec/integration/mongoid/associations_spec.rb
|
228
|
+
- spec/integration/mongoid/criteria_spec.rb
|
224
229
|
- spec/integration/mongoid/document_spec.rb
|
225
230
|
- spec/integration/mongoid/finders_spec.rb
|
226
231
|
- spec/spec_helper.rb
|
@@ -255,6 +260,7 @@ test_files:
|
|
255
260
|
- spec/unit/mongoid/extensions/hash/accessors_spec.rb
|
256
261
|
- spec/unit/mongoid/extensions/hash/assimilation_spec.rb
|
257
262
|
- spec/unit/mongoid/extensions/hash/conversions_spec.rb
|
263
|
+
- spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb
|
258
264
|
- spec/unit/mongoid/extensions/integer/conversions_spec.rb
|
259
265
|
- spec/unit/mongoid/extensions/object/conversions_spec.rb
|
260
266
|
- spec/unit/mongoid/extensions/string/conversions_spec.rb
|