class Slipcover::Document

Attributes

attributes[RW]
database_name[R]
id[RW]
rev[RW]

Public Class Methods

new(database_name, attributes={}) click to toggle source
# File lib/slipcover/document.rb, line 6
def initialize(database_name, attributes={})
  @database_name = database_name
  self.attributes = attributes.symbolize_keys
  set_intrinsic_values
end

Public Instance Methods

database() click to toggle source
# File lib/slipcover/document.rb, line 48
def database
  @database ||= Slipcover::Database.new(database_name)
end
delete() click to toggle source
# File lib/slipcover/document.rb, line 34
def delete
  http_adapter.delete("#{url}?rev=#{rev}")
  set_intrinsic_values({})
  nullify_intrinsic_attributes
  true
rescue Exception => e
  false
end
fetch() click to toggle source
# File lib/slipcover/document.rb, line 28
def fetch
  self.attributes = get(url)
  set_intrinsic_values
rescue Slipcover::HttpAdapter::DocumentNotFound
end
http_adapter() click to toggle source
# File lib/slipcover/document.rb, line 14
def http_adapter
  @http_adapter ||= HttpAdapter.new
end
save() click to toggle source
# File lib/slipcover/document.rb, line 21
def save
  http_method = id ? :put : :post
  doc_url = id ? url : database.url
  response = send(http_method, doc_url, attributes_for_save)
  set_intrinsic_values(response)
end
url() click to toggle source
# File lib/slipcover/document.rb, line 43
def url
  raise ArgumentError.new('no document id') unless id
  "#{database.url}/#{CGI::escape(id)}"
end

Private Instance Methods

attributes_for_save() click to toggle source
# File lib/slipcover/document.rb, line 54
def attributes_for_save
  attrs = attributes.clone
  attrs[:_rev] = rev if rev
  attrs[:_id]  = id if id
  attrs
end
nullify_intrinsic_attributes() click to toggle source
# File lib/slipcover/document.rb, line 67
def nullify_intrinsic_attributes
  attributes[:_id] = nil
  attributes[:id] = nil
  attributes[:_rev] = nil
  attributes[:rev] = nil
end
set_intrinsic_values(attrs=nil) click to toggle source
# File lib/slipcover/document.rb, line 61
def set_intrinsic_values(attrs=nil)
  attrs ||= attributes
  self.id =   attrs[:id] || attrs[:_id]
  self.rev =  attrs[:rev] || attrs[:_rev]
end