| Safe Haskell | Safe-Infered |
|---|
Database.CouchDB.Conduit
Contents
Description
CouchDB
To work with concrete objects, use the following modules:
- Database.CouchDB.Conduit.DB Database
- Database.CouchDB.Conduit.View Views
- Database.CouchDB.Conduit.LowLevel Low-level methods
For complete documentation about The Couch DB HTTP API see http://wiki.apache.org/couchdb/Complete_HTTP_API_Reference
- type Path = ByteString
- type Revision = ByteString
- data CouchConnection
- def :: Default a => a
- couchHost :: CouchConnection -> ByteString
- couchPort :: CouchConnection -> Int
- couchManager :: CouchConnection -> Maybe Manager
- couchLogin :: CouchConnection -> ByteString
- couchPass :: CouchConnection -> ByteString
- class ResourceIO m => MonadCouch m where
- data CouchError
- runCouch :: ResourceIO m => CouchConnection -> ResourceT (ReaderT CouchConnection m) a -> m a
- withCouchConnection :: ResourceIO m => CouchConnection -> (CouchConnection -> m a) -> m a
- couchRev :: MonadCouch m => Path -> Path -> ResourceT m Revision
- couchRev' :: MonadCouch m => Path -> Path -> ResourceT m Revision
- couchDelete :: MonadCouch m => Path -> Path -> Revision -> ResourceT m ()
- quoteQueryParam :: ByteString -> ByteString
Document paths and revisions
type Path = ByteStringSource
Represents a path or path fragment.
As a rule, full path to document in CouchDB is just URL path. But there is one subtlety. For example, document ids can contain slashes. But, to work with such objects, path fragments must be escaped.
database/doc%2Fname
But, fo non-document items such as views, attachments e.t.c., slashes between path fragments must not be escaped. While slashes in path fragments must be escaped.
database/_design/my%2Fdesign/_view/my%2Fview
Except low-level functions, couchdb-conduit escapes all segments in paths.
type Revision = ByteStringSource
Represents a revision of a CouchDB Document.
CouchDB Connection
data CouchConnection Source
Represents a single connection to CouchDB server. The constructor for this
data type is not exposed. Instead, you should use either the def method
to retrieve a default instance.
Instances
couchHost :: CouchConnection -> ByteStringSource
Hostname. Default value is "localhost"
couchPort :: CouchConnection -> IntSource
Port. 5984 by default.
couchLogin :: CouchConnection -> ByteStringSource
CouchDB login. By default is empty.
couchPass :: CouchConnection -> ByteStringSource
CouchDB password. By default is empty.
Runtime enviroment and errors
class ResourceIO m => MonadCouch m whereSource
A monad which allows access to the connection.
All functions to access CouchDB require a MonadCouch instance to
access the connection information. ReaderT is an instance of
MonadCouch, and runCouch runs a sequence of database actions using
ReaderT and ResourceT.
If your db code is part of a larger monad, it makes sense to just make the
larger monad an instance of MonadCouch and skip the intermediate ReaderT,
since then performance is improved by eliminating one monad from the final
transformer stack.
Methods
Instances
| ResourceIO m => MonadCouch (ReaderT CouchConnection m) |
data CouchError Source
A CouchDB Error.
Constructors
| CouchHttpError Int ByteString | Error comes from http. |
| CouchInternalError ByteString | Non-http errors include things like errors parsing the response. |
| NotModified | Is not an error actually. It is thrown when CouchDB returns
|
Instances
Arguments
| :: ResourceIO m | |
| => CouchConnection | Couch connection |
| -> ResourceT (ReaderT CouchConnection m) a | CouchDB actions |
| -> m a |
Run a sequence of CouchDB actions. This function is a combination of
withCouchConnection, runReaderT and runResourceT.
If you create your own instance of MonadCouch, use withCouchConnection.
Arguments
| :: ResourceIO m | |
| => CouchConnection | Couch connection |
| -> (CouchConnection -> m a) | Function to run |
| -> m a |
Connect to a CouchDB server, call the supplied function, and then close the connection.
withCouchConnection def {couchDB = "db"} . runReaderT . runResourceT $ do
... -- actions
Documents
Arguments
| :: MonadCouch m | |
| => Path | Database. |
| -> Path | Document path. |
| -> ResourceT m Revision |
Get Revision of a document.
Arguments
| :: MonadCouch m | |
| => Path | Database. |
| -> Path | Document path. |
| -> ResourceT m Revision |
Arguments
| :: MonadCouch m | |
| => Path | Database. |
| -> Path | Document path. |
| -> Revision | Revision |
| -> ResourceT m () |
Delete the given revision of the object.
Utility
quoteQueryParam :: ByteString -> ByteStringSource
Simple query param quotation.