Module: MotionPrime::ModelFinderMixin::ClassMethods
- Included in:
- NSFNanoBag
- Defined in:
- motion-prime/models/_finder_mixin.rb
Instance Attribute Summary collapse
-
#bare_class ⇒ Object
Returns the value of attribute bare_class.
Instance Method Summary collapse
-
#all(*args) ⇒ Object
Find all models.
- #bare_class_name ⇒ Object
-
#find(*arg) ⇒ Object
Find model by criteria.
-
#find_by_key(key) ⇒ Object, Nil
Find a model by key.
-
#find_keys(*arg) ⇒ Object
Find model keys by criteria.
-
#first ⇒ Object
Find first model model by default order.
-
#last ⇒ Object
Find last model model by default order.
Instance Attribute Details
#bare_class ⇒ Object
Returns the value of attribute bare_class.
6 7 8 |
# File 'motion-prime/models/_finder_mixin.rb', line 6 def @bare_class end |
Instance Method Details
#all(*args) ⇒ Object
Find all models
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'motion-prime/models/_finder_mixin.rb', line 11 def all(*args) return [] unless self.store if args[0].is_a?(Hash) = args[0][:sort] || {} else = {} end if .empty? self.store.objectsOfClassNamed(self.) else sort_descriptors = () self.store.objectsOfClassNamed(self., usingSortDescriptors:sort_descriptors) end end |
#bare_class_name ⇒ Object
137 138 139 140 |
# File 'motion-prime/models/_finder_mixin.rb', line 137 def subject = @bare_class || self subject.to_s.split("::").last end |
#find(*arg) ⇒ Object
Find model by criteria
@example:
User.find(1) # => [<User#1>]
User.find(:name => "Bob") # => [<User#1>]
User.find(:name => {NSFEqualTo => "Bob"}) # => [<User#1>]
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'motion-prime/models/_finder_mixin.rb', line 50 def find(*arg) if arg[0].is_a?(Hash) # hash style = arg[0] if arg[1] && arg[1].is_a?(Hash) = arg[1][:sort] || {} else = {} end elsif arg[0] && arg[0].is_a?(Integer) return find(id: arg[0]) elsif arg.empty? raise "Please use Model#all to find all records." else raise "Unexpected parameters: #{arg}." end search = NSFNanoSearch.searchWithStore(self.store) search.expressions = () search.sort = () search.filterClass = self. error_ptr = Pointer.new(:id) searchResults = search.searchObjectsWithReturnType(NSFReturnObjects, error:error_ptr) raise StoreError, error_ptr[0].description if error_ptr[0] if searchResults.is_a?(NSDictionary) searchResults.values else searchResults end end |
#find_by_key(key) ⇒ Object, Nil
Find a model by key
@example:
User.find_by_key(my_key)
126 127 128 129 130 131 132 133 134 135 |
# File 'motion-prime/models/_finder_mixin.rb', line 126 def find_by_key(key) search = NSFNanoSearch.searchWithStore(self.store) search.key = key error_ptr = Pointer.new(:id) searchResult = search.searchObjectsWithReturnType(NSFReturnObjects, error:error_ptr).first raise StoreError, error_ptr[0].description if error_ptr[0] searchResult.last if searchResult end |
#find_keys(*arg) ⇒ Object
Find model keys by criteria
@example:
User.find_keys(:name => "Bob") # => ["1"]
User.find_keys(:name => {NSFEqualTo => "Bob"}) # => ["1"]
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'motion-prime/models/_finder_mixin.rb', line 89 def find_keys(*arg) if arg[0].is_a?(Hash) = arg[0] if arg[1] && arg[1].is_a?(Hash) = arg[1][:sort] || {} else = {} end elsif arg.empty? = {} = {} else raise "unexpected parameters #{arg}" end search = NSFNanoSearch.searchWithStore(self.store) search.expressions = () search.sort = () search.filterClass = self. error_ptr = Pointer.new(:id) searchResults = search.searchObjectsWithReturnType(NSFReturnKeys, error:error_ptr) raise StoreError, error_ptr[0].description if error_ptr[0] if searchResults.is_a?(NSDictionary) searchResults.values else searchResults end end |
#first ⇒ Object
Find first model model by default order
38 39 40 |
# File 'motion-prime/models/_finder_mixin.rb', line 38 def first all.first end |
#last ⇒ Object
Find last model model by default order
31 32 33 |
# File 'motion-prime/models/_finder_mixin.rb', line 31 def last all.last end |