nano-store 0.3.4 → 0.3.5
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/README.md +4 -1
- data/lib/nano_store/finder.rb +10 -8
- data/lib/nano_store/version.rb +1 -1
- data/spec/finder_spec.rb +10 -0
- metadata +7 -7
data/README.md
CHANGED
@@ -90,11 +90,14 @@ User.all # => [<User#1>, <User#2>]
|
|
90
90
|
# find model by criteria
|
91
91
|
users = User.find(:name, NSFEqualTo, "Bob")
|
92
92
|
|
93
|
-
# or use
|
93
|
+
# or use Hash
|
94
94
|
users = User.find(:name => "Bob")
|
95
95
|
users = User.find(:name => { NSFEqualTo => "Ronald" })
|
96
96
|
users = User.find(:name => { NSFEqualTo => "Ronald" }, :age => { NSFGreaterThan => 50 })
|
97
97
|
|
98
|
+
# or use Array for matching multiple values
|
99
|
+
users = User.find(:name => ["Bob", "Ronald", "Ken"])
|
100
|
+
|
98
101
|
# Optionally sort the result with additional hash parameters
|
99
102
|
users = User.find({:age => { NSFGreaterThan => 10 }}, {:sort => {:age => :desc}})
|
100
103
|
````
|
data/lib/nano_store/finder.rb
CHANGED
@@ -107,6 +107,14 @@ module NanoStore
|
|
107
107
|
value = NSFNanoPredicate.predicateWithColumn(NSFValueColumn, matching:operator, value:sub_val)
|
108
108
|
expression.addPredicate(value, withOperator:NSFAnd)
|
109
109
|
end
|
110
|
+
elsif val.is_a?(Array)
|
111
|
+
value = NSFNanoPredicate.predicateWithColumn(NSFValueColumn, matching:NSFEqualTo, value:val.pop)
|
112
|
+
expression.addPredicate(value, withOperator:NSFAnd)
|
113
|
+
|
114
|
+
val.each do |sub_val|
|
115
|
+
value = NSFNanoPredicate.predicateWithColumn(NSFValueColumn, matching:NSFEqualTo, value:sub_val)
|
116
|
+
expression.addPredicate(value, withOperator:NSFOr)
|
117
|
+
end
|
110
118
|
else
|
111
119
|
value = NSFNanoPredicate.predicateWithColumn(NSFValueColumn, matching:NSFEqualTo, value:val)
|
112
120
|
expression.addPredicate(value, withOperator:NSFAnd)
|
@@ -117,20 +125,14 @@ module NanoStore
|
|
117
125
|
end
|
118
126
|
|
119
127
|
SORT_MAPPING = {
|
120
|
-
'ASC' => true,
|
121
|
-
'DESC' => false,
|
122
|
-
:ASC => true,
|
123
|
-
:DESC => false,
|
124
128
|
'asc' => true,
|
125
129
|
'desc' => false,
|
126
|
-
:asc => true,
|
127
|
-
:desc => false,
|
128
130
|
}
|
129
131
|
|
130
132
|
def sort_descriptor_with_options(options)
|
131
133
|
sorter = options.collect do |opt_key, opt_val|
|
132
|
-
if SORT_MAPPING.keys.include?(opt_val)
|
133
|
-
NSFNanoSortDescriptor.alloc.initWithAttribute(opt_key.to_s, ascending:SORT_MAPPING[opt_val])
|
134
|
+
if SORT_MAPPING.keys.include?(opt_val.to_s.downcase)
|
135
|
+
NSFNanoSortDescriptor.alloc.initWithAttribute(opt_key.to_s, ascending:SORT_MAPPING[opt_val.to_s.downcase])
|
134
136
|
else
|
135
137
|
raise "unsupported sort parameters: #{opt_val}"
|
136
138
|
end
|
data/lib/nano_store/version.rb
CHANGED
data/spec/finder_spec.rb
CHANGED
@@ -39,6 +39,16 @@ describe "Finder" do
|
|
39
39
|
user.name.should.be == "Carl"
|
40
40
|
user.age.should.be == 4
|
41
41
|
end
|
42
|
+
|
43
|
+
it "search object with array (OR)" do
|
44
|
+
users = User.find(:name => ["Carl", "Amy"])
|
45
|
+
users.size.should == 2
|
46
|
+
|
47
|
+
users.collect(&:name).include?("Carl").should == true
|
48
|
+
users.collect(&:name).include?("Amy").should == true
|
49
|
+
users.collect(&:name).include?("Bob").should == false
|
50
|
+
end
|
51
|
+
|
42
52
|
|
43
53
|
it "search object with multiple parameters" do
|
44
54
|
stub_user("Ronald", 18, Time.now).save
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nano-store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-05-23 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bubble-wrap
|
16
|
-
requirement: &
|
16
|
+
requirement: &70196040194380 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.1.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70196040194380
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: motion-cocoapods
|
27
|
-
requirement: &
|
27
|
+
requirement: &70196040192580 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.0.1
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70196040192580
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: motion-redgreen
|
38
|
-
requirement: &
|
38
|
+
requirement: &70196040191580 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70196040191580
|
47
47
|
description: Wrapper for NanoStore, a lightweight schema-less key-value document database
|
48
48
|
based on sqlite, for RubyMotion.
|
49
49
|
email:
|