couchrest_model/lib/couchrest/core/document.rb

53 lines
1.1 KiB
Ruby
Raw Normal View History

2008-11-04 07:52:50 +01:00
module CouchRest
class Response < Hash
def initialize keys = {}
keys.each do |k,v|
self[k.to_s] = v
end
end
def []= key, value
super(key.to_s, value)
end
def [] key
super(key.to_s)
end
end
class Document < Response
include CouchRest::Mixins::Views
2008-11-04 07:52:50 +01:00
2008-11-09 01:28:58 +01:00
attr_accessor :database
@@database = nil
# override the CouchRest::Model-wide default_database
# This is not a thread safe operation, do not change the model
# database at runtime.
def self.use_database(db)
@@database = db
2008-11-09 01:28:58 +01:00
end
def self.database
@@database
2008-11-09 01:28:58 +01:00
end
# Returns the CouchDB uri for the document
def uri(append_rev = false)
return nil if new_document?
couch_uri = "http://#{database.uri}/#{CGI.escape(id)}"
if append_rev == true
couch_uri << "?rev=#{rev}"
elsif append_rev.kind_of?(Integer)
couch_uri << "?rev=#{append_rev}"
end
couch_uri
end
# Returns the document's database
def database
@database || self.class.database
end
2008-11-09 01:28:58 +01:00
2008-11-04 07:52:50 +01:00
end
end