nano-store 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
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 => 'DESC'}})
99
+ users = User.find({:age => { NSFGreaterThan => 10 }}, {:sort => {:age => :desc}})
100
100
  ````
101
101
 
102
102
  ### Update
@@ -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
- expressions = expressions_with_options(options)
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
- expressions = expressions_with_options(options)
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 opt_val.is_a?(TrueClass) || opt_val.is_a?(FalseClass)
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}"
@@ -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, [])
@@ -1,3 +1,3 @@
1
1
  module NanoStore
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.4"
3
3
  end
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 => true}})
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.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: &70184077832220 !ruby/object:Gem::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: *70184077832220
24
+ version_requirements: *70220199532500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: motion-cocoapods
27
- requirement: &70184077829960 !ruby/object:Gem::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: *70184077829960
35
+ version_requirements: *70220199530260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: motion-redgreen
38
- requirement: &70184077828360 !ruby/object:Gem::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: *70184077828360
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: