nano-store 0.3.5 → 0.3.6
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/Gemfile.lock +3 -3
- data/lib/nano_store/finder.rb +21 -5
- data/lib/nano_store/model.rb +1 -10
- data/lib/nano_store/version.rb +1 -1
- data/nano-store.gemspec +1 -1
- data/spec/finder_spec.rb +19 -0
- metadata +8 -8
data/Gemfile.lock
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nano-store (0.3.
|
4
|
+
nano-store (0.3.5)
|
5
5
|
bubble-wrap (>= 0.1.1)
|
6
|
-
motion-cocoapods (>= 1.0.
|
6
|
+
motion-cocoapods (>= 1.0.2)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
@@ -11,7 +11,7 @@ GEM
|
|
11
11
|
bubble-wrap (0.1.1)
|
12
12
|
cocoapods (0.5.1)
|
13
13
|
xcodeproj (~> 0.1.0)
|
14
|
-
motion-cocoapods (1.0.
|
14
|
+
motion-cocoapods (1.0.2)
|
15
15
|
cocoapods (>= 0.5.1)
|
16
16
|
motion-redgreen (0.0.2)
|
17
17
|
xcodeproj (0.1.0)
|
data/lib/nano_store/finder.rb
CHANGED
@@ -1,7 +1,18 @@
|
|
1
1
|
module NanoStore
|
2
2
|
module FinderMethods
|
3
3
|
def all(*args)
|
4
|
-
|
4
|
+
if args[0].is_a?(Hash)
|
5
|
+
sort_options = args[0][:sort] || {}
|
6
|
+
else
|
7
|
+
sort_options = {}
|
8
|
+
end
|
9
|
+
|
10
|
+
if sort_options.empty?
|
11
|
+
self.store.objectsOfClassNamed(self.to_s)
|
12
|
+
else
|
13
|
+
sort_descriptors = sort_descriptor_with_options(sort_options)
|
14
|
+
self.store.objectsOfClassNamed(self.to_s, usingSortDescriptors:sort_descriptors)
|
15
|
+
end
|
5
16
|
end
|
6
17
|
|
7
18
|
# find model by criteria
|
@@ -46,7 +57,9 @@ module NanoStore
|
|
46
57
|
error_ptr = Pointer.new(:id)
|
47
58
|
searchResults = search.searchObjectsWithReturnType(NSFReturnObjects, error:error_ptr)
|
48
59
|
raise NanoStoreError, error_ptr[0].description if error_ptr[0]
|
49
|
-
|
60
|
+
|
61
|
+
# workaround until we find way to only query specific class
|
62
|
+
searchResults.select {|obj| obj.class == self }
|
50
63
|
end
|
51
64
|
|
52
65
|
# find model keys by criteria
|
@@ -90,9 +103,13 @@ module NanoStore
|
|
90
103
|
search.sort = sort_descriptors
|
91
104
|
|
92
105
|
error_ptr = Pointer.new(:id)
|
93
|
-
|
106
|
+
|
107
|
+
search.attributesToBeReturned = ["NSFObjectClass", "NSFKey"]
|
108
|
+
searchResults = search.searchObjectsWithReturnType(NSFReturnObjects, error:error_ptr)
|
94
109
|
raise NanoStoreError, error_ptr[0].description if error_ptr[0]
|
95
|
-
|
110
|
+
|
111
|
+
# workaround until we find way to only query specific class
|
112
|
+
searchResults.select {|obj| obj.class == self }.collect(&:key)
|
96
113
|
end
|
97
114
|
|
98
115
|
protected
|
@@ -101,7 +118,6 @@ module NanoStore
|
|
101
118
|
options.each do |key, val|
|
102
119
|
attribute = NSFNanoPredicate.predicateWithColumn(NSFAttributeColumn, matching:NSFEqualTo, value:key.to_s)
|
103
120
|
expression = NSFNanoExpression.expressionWithPredicate(attribute)
|
104
|
-
|
105
121
|
if val.is_a?(Hash)
|
106
122
|
val.each do |operator, sub_val|
|
107
123
|
value = NSFNanoPredicate.predicateWithColumn(NSFValueColumn, matching:operator, value:sub_val)
|
data/lib/nano_store/model.rb
CHANGED
@@ -23,7 +23,7 @@ module NanoStore
|
|
23
23
|
name = matched[1]
|
24
24
|
modifier = matched[2]
|
25
25
|
|
26
|
-
if self.class.attributes.include?(name.to_sym)
|
26
|
+
if self.class.attributes.include?(name.to_sym)
|
27
27
|
if modifier == "="
|
28
28
|
if args[0].nil?
|
29
29
|
self.info.delete(name.to_sym)
|
@@ -84,15 +84,6 @@ module NanoStore
|
|
84
84
|
subclass.instance_variable_set(:@attributes, [])
|
85
85
|
subclass.instance_variable_set(:@store, nil)
|
86
86
|
end
|
87
|
-
|
88
|
-
private
|
89
|
-
def search_with_store(store, attribute, match, value)
|
90
|
-
search = NSFNanoSearch.searchWithStore(self.store)
|
91
|
-
search.attribute = attribute.to_s
|
92
|
-
search.match = match
|
93
|
-
search.value = value
|
94
|
-
search
|
95
|
-
end
|
96
87
|
end
|
97
88
|
|
98
89
|
class Model < NSFNanoObject
|
data/lib/nano_store/version.rb
CHANGED
data/nano-store.gemspec
CHANGED
@@ -15,6 +15,6 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.version = NanoStore::VERSION
|
16
16
|
|
17
17
|
gem.add_dependency 'bubble-wrap', '>= 0.1.1'
|
18
|
-
gem.add_dependency 'motion-cocoapods', '>= 1.0.
|
18
|
+
gem.add_dependency 'motion-cocoapods', '>= 1.0.2'
|
19
19
|
gem.add_development_dependency 'motion-redgreen'
|
20
20
|
end
|
data/spec/finder_spec.rb
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
describe "Finder" do
|
2
|
+
class Car < NanoStore::Model
|
3
|
+
attribute :name
|
4
|
+
attribute :created_at
|
5
|
+
end
|
6
|
+
|
7
|
+
|
2
8
|
def stub_user(name, age, created_at)
|
3
9
|
user = User.new
|
4
10
|
user.name = name
|
@@ -121,6 +127,19 @@ describe "Finder" do
|
|
121
127
|
users.size.should == 9
|
122
128
|
users.first.name.should == "Carl"
|
123
129
|
end
|
130
|
+
|
131
|
+
it "#all only return objects of the class" do
|
132
|
+
Car.create(:name => "Honda")
|
133
|
+
Car.count.should == 1
|
134
|
+
Car.all.size.should == 1
|
135
|
+
end
|
136
|
+
|
137
|
+
it "#find only return objects of the class" do
|
138
|
+
Car.create(:name => "Honda")
|
139
|
+
Car.count.should == 1
|
140
|
+
Car.find({}).size.should == 1
|
141
|
+
Car.find_keys({}).size.should == 1
|
142
|
+
end
|
124
143
|
|
125
144
|
|
126
145
|
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.6
|
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: &70301664740020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,21 +21,21 @@ dependencies:
|
|
21
21
|
version: 0.1.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70301664740020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: motion-cocoapods
|
27
|
-
requirement: &
|
27
|
+
requirement: &70301664739380 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.0.
|
32
|
+
version: 1.0.2
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70301664739380
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: motion-redgreen
|
38
|
-
requirement: &
|
38
|
+
requirement: &70301664738860 !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: *70301664738860
|
47
47
|
description: Wrapper for NanoStore, a lightweight schema-less key-value document database
|
48
48
|
based on sqlite, for RubyMotion.
|
49
49
|
email:
|