Class: Divan::Models::Base
- Inherits:
-
Object
- Object
- Divan::Models::Base
- Defined in:
- lib/divan/models/base.rb
Direct Known Subclasses
Class Method Summary collapse
- .all ⇒ Object
- .create(opts = {}) ⇒ Object
- .delete_all(params = nil) ⇒ Object
- .find(id, params = {}) ⇒ Object
- .find_all(params = nil) ⇒ Object
- .strategies ⇒ Object
Instance Method Summary collapse
- #delete ⇒ Object
- #revision(index) ⇒ Object
- #revision!(index) ⇒ Object
- #revision_ids ⇒ Object
- #save(strategy = nil, &block) ⇒ Object
Class Method Details
.all ⇒ Object
113 114 115 |
# File 'lib/divan/models/base.rb', line 113 def all find_all end |
.create(opts = {}) ⇒ Object
126 127 128 129 130 131 132 133 |
# File 'lib/divan/models/base.rb', line 126 def create(opts = {}) raise ArgumentError if( !opts.is_a?(Hash) && !opts.is_a?(Array) ) if opts.is_a? Hash single_create opts else bulk_create opts end end |
.delete_all(params = nil) ⇒ Object
117 118 119 120 121 122 123 124 |
# File 'lib/divan/models/base.rb', line 117 def delete_all(params = nil) to_be_deleted = find_all(params).map do |object| {:_id => object.id, :_rev => object.rev, :_deleted => true } end payload = { :docs => to_be_deleted }.to_json database.client['_bulk_docs'].post payload, :content_type => :json, :accept => :json to_be_deleted.size end |
.find(id, params = {}) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/divan/models/base.rb', line 97 def find(id, params = {}) begin last_request = database.client[Divan::Utils.formatted_path id, params].get rescue RestClient::ResourceNotFound return nil end attributes = JSON.parse last_request, :symbolize_names => true obj = self.new attributes obj.last_request = last_request obj end |
.find_all(params = nil) ⇒ Object
109 110 111 |
# File 'lib/divan/models/base.rb', line 109 def find_all(params=nil) query_view :all, params end |
.strategies ⇒ Object
135 136 137 |
# File 'lib/divan/models/base.rb', line 135 def strategies @strategies ||= superclass.respond_to?(:strategies) ? superclass.strategies.clone : {} end |
Instance Method Details
#delete ⇒ Object
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/divan/models/base.rb', line 19 def delete begin @last_request = database.client[current_document_path].delete rescue RestClient::ResourceNotFound @last_request = nil return @last_request end @rev = JSON.parse(@last_request, :symbolize_names => true )[:rev] @last_request end |
#revision(index) ⇒ Object
39 40 41 42 43 |
# File 'lib/divan/models/base.rb', line 39 def revision(index) revision!(index) rescue Divan::DocumentRevisionMissing nil end |
#revision!(index) ⇒ Object
45 46 47 48 49 50 |
# File 'lib/divan/models/base.rb', line 45 def revision!(index) r = revision_ids.find{ |rev| rev[0..1].to_i == index } r.nil? and raise Divan::DocumentRevisionMissing.new(self), "Revision with index #{index} missing" return self if r == @rev self.class.find @id, :rev => r end |
#revision_ids ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/divan/models/base.rb', line 30 def revision_ids begin @last_request = database.client[document_path :revs_info => true].get JSON.parse(@last_request, :symbolize_names => true )[:_revs_info].find_all{ |hash| hash[:status] == 'available' }.map{ |hash| hash[:rev] } rescue RestClient::ResourceNotFound return [] end end |
#save(strategy = nil, &block) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/divan/models/base.rb', line 5 def save(strategy=nil, &block) self.class.execute_before_validate_callback(self) or return false validate or return false self.class.execute_after_validate_callback(self) or return false self.class.execute_before_save_callback(self) or return false execute_save strategy, &block self.class.execute_after_save_callback(self) @last_request end |