nano-store 0.3.3 → 0.3.4
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 +1 -1
- data/lib/nano_store/finder.rb +26 -9
- data/lib/nano_store/model.rb +0 -8
- data/lib/nano_store/version.rb +1 -1
- data/spec/finder_spec.rb +23 -2
- data/spec/model_spec.rb +0 -15
- metadata +7 -7
data/README.md
CHANGED
@@ -96,7 +96,7 @@ users = User.find(:name => { NSFEqualTo => "Ronald" })
|
|
96
96
|
users = User.find(:name => { NSFEqualTo => "Ronald" }, :age => { NSFGreaterThan => 50 })
|
97
97
|
|
98
98
|
# Optionally sort the result with additional hash parameters
|
99
|
-
users = User.find({:age => { NSFGreaterThan => 10 }}, {:sort => {:age =>
|
99
|
+
users = User.find({:age => { NSFGreaterThan => 10 }}, {:sort => {:age => :desc}})
|
100
100
|
````
|
101
101
|
|
102
102
|
### Update
|
data/lib/nano_store/finder.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
module NanoStore
|
2
|
-
module FinderMethods
|
2
|
+
module FinderMethods
|
3
|
+
def all(*args)
|
4
|
+
find({}, *args)
|
5
|
+
end
|
6
|
+
|
3
7
|
# find model by criteria
|
4
8
|
#
|
5
9
|
# Return array of models
|
@@ -30,10 +34,15 @@ module NanoStore
|
|
30
34
|
raise "unexpected parameters #{arg}"
|
31
35
|
end
|
32
36
|
search = NSFNanoSearch.searchWithStore(self.store)
|
33
|
-
|
37
|
+
|
38
|
+
unless options.empty?
|
39
|
+
expressions = expressions_with_options(options)
|
40
|
+
search.expressions = expressions
|
41
|
+
end
|
42
|
+
|
34
43
|
sort_descriptors = sort_descriptor_with_options(sort_options)
|
35
|
-
search.expressions = expressions
|
36
44
|
search.sort = sort_descriptors
|
45
|
+
|
37
46
|
error_ptr = Pointer.new(:id)
|
38
47
|
searchResults = search.searchObjectsWithReturnType(NSFReturnObjects, error:error_ptr)
|
39
48
|
raise NanoStoreError, error_ptr[0].description if error_ptr[0]
|
@@ -69,11 +78,17 @@ module NanoStore
|
|
69
78
|
else
|
70
79
|
raise "unexpected parameters #{arg}"
|
71
80
|
end
|
81
|
+
|
72
82
|
search = NSFNanoSearch.searchWithStore(self.store)
|
73
|
-
|
83
|
+
|
84
|
+
unless options.empty?
|
85
|
+
expressions = expressions_with_options(options)
|
86
|
+
search.expressions = expressions
|
87
|
+
end
|
88
|
+
|
74
89
|
sort_descriptors = sort_descriptor_with_options(sort_options)
|
75
|
-
search.expressions = expressions
|
76
90
|
search.sort = sort_descriptors
|
91
|
+
|
77
92
|
error_ptr = Pointer.new(:id)
|
78
93
|
searchResults = search.searchObjectsWithReturnType(NSFReturnKeys, error:error_ptr)
|
79
94
|
raise NanoStoreError, error_ptr[0].description if error_ptr[0]
|
@@ -105,14 +120,16 @@ module NanoStore
|
|
105
120
|
'ASC' => true,
|
106
121
|
'DESC' => false,
|
107
122
|
:ASC => true,
|
108
|
-
:DESC => false
|
123
|
+
:DESC => false,
|
124
|
+
'asc' => true,
|
125
|
+
'desc' => false,
|
126
|
+
:asc => true,
|
127
|
+
:desc => false,
|
109
128
|
}
|
110
129
|
|
111
130
|
def sort_descriptor_with_options(options)
|
112
131
|
sorter = options.collect do |opt_key, opt_val|
|
113
|
-
if
|
114
|
-
NSFNanoSortDescriptor.alloc.initWithAttribute(opt_key.to_s, ascending:opt_val)
|
115
|
-
elsif SORT_MAPPING.keys.include?(opt_val)
|
132
|
+
if SORT_MAPPING.keys.include?(opt_val)
|
116
133
|
NSFNanoSortDescriptor.alloc.initWithAttribute(opt_key.to_s, ascending:SORT_MAPPING[opt_val])
|
117
134
|
else
|
118
135
|
raise "unsupported sort parameters: #{opt_val}"
|
data/lib/nano_store/model.rb
CHANGED
@@ -79,14 +79,6 @@ module NanoStore
|
|
79
79
|
def count
|
80
80
|
self.store.count(self)
|
81
81
|
end
|
82
|
-
|
83
|
-
def all
|
84
|
-
search = NSFNanoSearch.searchWithStore(self.store)
|
85
|
-
error_ptr = Pointer.new(:id)
|
86
|
-
searchResults = search.searchObjectsWithReturnType(NSFReturnObjects, error:error_ptr)
|
87
|
-
raise NanoStoreError, error_ptr[0].description if error_ptr[0]
|
88
|
-
searchResults.values
|
89
|
-
end
|
90
82
|
|
91
83
|
def inherited(subclass)
|
92
84
|
subclass.instance_variable_set(:@attributes, [])
|
data/lib/nano_store/version.rb
CHANGED
data/spec/finder_spec.rb
CHANGED
@@ -27,6 +27,7 @@ describe "Finder" do
|
|
27
27
|
it "search object traditional way: supply key, operator and value" do
|
28
28
|
users = User.find(:name, NSFEqualTo, "Bob")
|
29
29
|
users.should.not.be.nil
|
30
|
+
|
30
31
|
user = users.first
|
31
32
|
user.should.not.be.nil
|
32
33
|
user.name.should.be == "Bob"
|
@@ -67,7 +68,7 @@ describe "Finder" do
|
|
67
68
|
stub_user("Zidd", 59, Time.now).save
|
68
69
|
stub_user("Sarah", 49, Time.now).save
|
69
70
|
|
70
|
-
users = User.find({:age => { NSFGreaterThan => 1 }}, {:sort => {:age =>
|
71
|
+
users = User.find({:age => { NSFGreaterThan => 1 }}, {:sort => {:age => :asc}})
|
71
72
|
users.size.should == 9
|
72
73
|
user = users.first
|
73
74
|
user.name.should.be == "Carl"
|
@@ -85,11 +86,31 @@ describe "Finder" do
|
|
85
86
|
user.name.should.be == "Zidd"
|
86
87
|
user.age.should.be == 59
|
87
88
|
end
|
88
|
-
|
89
89
|
|
90
90
|
it "find object" do
|
91
91
|
user = User.find(:name, NSFEqualTo, "Bob").first
|
92
92
|
user.name.should == "Bob"
|
93
93
|
end
|
94
94
|
|
95
|
+
it "find all objects" do
|
96
|
+
User.count.should == 3
|
97
|
+
users = User.all
|
98
|
+
users.size.should == 3
|
99
|
+
end
|
100
|
+
|
101
|
+
it "find all objects, sorted" do
|
102
|
+
stub_user("Alan", 39, Time.now).save
|
103
|
+
stub_user("Cat", 29, Time.now).save
|
104
|
+
stub_user("Dan", 36, Time.now).save
|
105
|
+
stub_user("Ted", 18, Time.now).save
|
106
|
+
stub_user("Zidd", 59, Time.now).save
|
107
|
+
stub_user("Sarah", 49, Time.now).save
|
108
|
+
|
109
|
+
User.count.should == 9
|
110
|
+
users = User.all({:sort => {:age => :asc}})
|
111
|
+
users.size.should == 9
|
112
|
+
users.first.name.should == "Carl"
|
113
|
+
end
|
114
|
+
|
115
|
+
|
95
116
|
end
|
data/spec/model_spec.rb
CHANGED
@@ -82,19 +82,4 @@ describe NanoStore::Model do
|
|
82
82
|
User.count.should == 0
|
83
83
|
end
|
84
84
|
|
85
|
-
it "find all objects" do
|
86
|
-
user = stub_user("Bob", 10, Time.now)
|
87
|
-
user.save
|
88
|
-
|
89
|
-
user2 = stub_user("Amy", 11, Time.now)
|
90
|
-
user2.save
|
91
|
-
|
92
|
-
|
93
|
-
User.count.should == 2
|
94
|
-
users = User.all
|
95
|
-
users.size.should == 2
|
96
|
-
users.collect(&:key).include?(user.key)
|
97
|
-
users.collect(&:key).include?(user2.key)
|
98
|
-
end
|
99
|
-
|
100
85
|
end
|
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.4
|
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: &70220199532500 !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: *70220199532500
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: motion-cocoapods
|
27
|
-
requirement: &
|
27
|
+
requirement: &70220199530260 !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: *70220199530260
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: motion-redgreen
|
38
|
-
requirement: &
|
38
|
+
requirement: &70220199528680 !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: *70220199528680
|
47
47
|
description: Wrapper for NanoStore, a lightweight schema-less key-value document database
|
48
48
|
based on sqlite, for RubyMotion.
|
49
49
|
email:
|