omnis 0.4.0 → 0.4.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/omnis/query.rb +3 -2
- data/lib/omnis/version.rb +1 -1
- data/spec/lib/omnis/mongo_query_spec.rb +14 -5
- metadata +2 -2
data/lib/omnis/query.rb
CHANGED
@@ -4,7 +4,7 @@ module Omnis
|
|
4
4
|
module Query
|
5
5
|
|
6
6
|
class Param
|
7
|
-
attr_reader :name, :operator
|
7
|
+
attr_reader :name, :operator, :opts
|
8
8
|
def initialize(name, operator, opts={}, &extractor)
|
9
9
|
# raise ArgumentError("operator must be a descendant of Omnis::Operators::NullOperator") unless operator.is_a? Omnis::Operators::NullOperator
|
10
10
|
extractor ||= ->params { params[name] }
|
@@ -19,7 +19,8 @@ module Omnis
|
|
19
19
|
|
20
20
|
# extracts the value for a param, using the extractor lamba or the default value
|
21
21
|
def extract(params)
|
22
|
-
value = @extractor.(params)
|
22
|
+
value = @extractor.(params) if params.keys.include? name # only run extractor if the param was in the request (params)
|
23
|
+
value ||= default # if there is a default, apply it
|
23
24
|
return value if value.is_a? Omnis::Operators::NullOperator
|
24
25
|
return @operator.new(@name, value, @opts) unless value.nil?
|
25
26
|
end
|
data/lib/omnis/version.rb
CHANGED
@@ -49,17 +49,26 @@ describe Omnis::MongoQuery do
|
|
49
49
|
|
50
50
|
fields %w[ref_anixe status]
|
51
51
|
# if this param is in the query, fetch the field "ref_customer"
|
52
|
-
param :ref_customer, Matches, :field =>
|
52
|
+
param :ref_customer, Matches, :field => 'ref_customer'
|
53
|
+
param(:date_booked, Between, :field => 'date_booked') {|src| Between.new(:date_booked, Time.at(0)..Time.at(1), :field => 'date_booked') }
|
53
54
|
end
|
54
55
|
|
55
56
|
it 'extra field not requested when param not present' do
|
56
|
-
|
57
|
-
|
57
|
+
m = TestFieldsQuery.new({}).to_mongo
|
58
|
+
m.selector.should == {}
|
59
|
+
m.opts.should == { :limit => 20, :skip => 0, :fields => ['ref_anixe', 'status']}
|
58
60
|
end
|
59
61
|
|
60
62
|
it 'extra field is requested when param is in request' do
|
61
|
-
|
62
|
-
|
63
|
+
m = TestFieldsQuery.new({"ref_customer" => "123"}).to_mongo
|
64
|
+
m.selector.should == {:ref_customer => /123/i}
|
65
|
+
m.opts.should == { :limit => 20, :skip => 0, :fields => ['ref_anixe', 'status', 'ref_customer']}
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'works with lambdas, but the lambda must provide the opts!' do
|
69
|
+
m = TestFieldsQuery.new({"date_booked" => "1NOV"}).to_mongo
|
70
|
+
m.selector
|
71
|
+
m.opts.should == { :limit => 20, :skip => 0, :fields => ['ref_anixe', 'status', 'date_booked']}
|
63
72
|
end
|
64
73
|
end
|
65
74
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omnis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
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: 2012-11-
|
12
|
+
date: 2012-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|