CouchdbClient.Document

Very minimalistic wrapper around CouchDB API (tested against CouchDB 1.5.0).

Examples

iex> alias CouchdbClient.Database, as: DB nil

iex> alias CouchdbClient.Document, as: Doc nil

iex> db = %DB{ host: “127.0.0.1”, port: “5984”, name: “test_database” } %CouchdbClient.Database{host: “127.0.0.1”, name: “test_database”, port: “5984”, scheme: “http”}

iex> doc = %Doc{ id: “test_document”, data: %{ “foo” => “bar” } } %CouchdbClient.Document{data: %{“foo” => “bar”}, id: “test_document”, rev: nil}

iex> doc = Doc.insert doc, db %CouchdbClient.Document{data: %{“_rev” => _REV1, “foo” => “bar”}, id: “test_document”, rev: _REV1 }

iex> doc = Doc.set doc, %{ “boom” => “bang” } %CouchdbClient.Document{data: %{“_rev” => _REV1, “boom” => “bang”, “foo” => “bar”}, id: “test_document”, rev: _REV1 }

iex> doc = Doc.update doc, db %CouchdbClient.Document{data: %{“_rev” => rev2, “boom” => “bang”, “foo” => “bar”}, id: “test_document”, rev: rev2 }

iex> Doc.get_rev doc, db rev2

iex> Doc.delete doc, db :ok

Summary

Functions

Deletes the document. Returns :ok

Performs a HEAD request to CouchDB to retrieve the current revision tag. This is useful if you’d like to attach files to a document you don’t actually have already loaded

Inserts document. If document has no ID, a server-generated id will be set. Returns freshly inserted document (with id/rev)

Loads the document from DB. Both :database and :id attributes must be set for this to work

Inserts or updates a document. Returns inserted/updated document

Merges data into document’s data

Updates document

Returns the document’s URL

Functions

delete(document, db)

Deletes the document. Returns :ok

get_rev(document, db)

Performs a HEAD request to CouchDB to retrieve the current revision tag. This is useful if you’d like to attach files to a document you don’t actually have already loaded.

Returns a document with data set to nil to prevent this document to be saved.

insert(document, db)

Inserts document. If document has no ID, a server-generated id will be set. Returns freshly inserted document (with id/rev)

load(document, db)

Loads the document from DB. Both :database and :id attributes must be set for this to work.

save(document, db)

Inserts or updates a document. Returns inserted/updated document.

set(document, data)

Merges data into document’s data.

doc = CouchdbClient.Document.set document, %{ bar: “baz” }

update(document, db)

Updates document.

url(document, db)

Returns the document’s URL