Copyright | Copyright (c) 2015, Michael Alan Dorman |
---|---|
License | MIT |
Maintainer | mdorman@jaunder.io |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
This module is intended to be import qualified
. No attempt has been made to keep names of types or functions from clashing with obvious or otherwise commonly-used names, or even other modules within this package.
The functions here are derived from (and presented in the same order as) the Design Document API documentation. For each function, we attempt to link back to the original documentation, as well as make a notation as to how complete and correct we feel our implementation is.
Each function takes a Context
---which, among other things, holds the name of the database---as its final parameter, and returns a Result
.
- meta :: (FromJSON a, MonadIO m) => RetrieveDoc -> DocId -> Maybe DocRev -> Context -> m (Result a)
- get :: (FromJSON a, MonadIO m) => RetrieveDoc -> DocId -> Maybe DocRev -> Context -> m (Result a)
- put :: (FromJSON a, MonadIO m, ToJSON b) => ModifyDoc -> DocId -> Maybe DocRev -> b -> Context -> m (Result a)
- delete :: (FromJSON a, MonadIO m) => ModifyDoc -> DocId -> Maybe DocRev -> Context -> m (Result a)
- copy :: (FromJSON a, MonadIO m) => ModifyDoc -> DocId -> Maybe DocRev -> DocId -> Context -> m (Result a)
- info :: (FromJSON a, MonadIO m) => DocId -> Context -> m (Result a)
- allDocs :: (FromJSON a, MonadIO m) => ViewParams -> DocId -> DocId -> Context -> m (Result a)
- someDocs :: (FromJSON a, MonadIO m) => ViewParams -> DocId -> DocId -> [DocId] -> Context -> m (Result a)
- viewBase :: ViewParams -> DocId -> DocId -> RequestBuilder ()
Documentation
:: (FromJSON a, MonadIO m) | |
=> RetrieveDoc | Parameters for the HEAD request |
-> DocId | The ID of the design document |
-> Maybe DocRev | A desired revision |
-> Context | |
-> m (Result a) |
Get the size and revision of the specified design document
The return value is an object that should only contain the keys "rev" and "size", that can be easily parsed into a pair of (DocRev, Int):
>>>
(,) <$> (getKey "rev" >>= toOutputType) <*> (getKey "size" >>= toOutputType)
If the specified DocRev matches, returns a JSON Null, otherwise a JSON value for the document.
Status: Complete
:: (FromJSON a, MonadIO m) | |
=> RetrieveDoc | Parameters for the HEAD request |
-> DocId | The ID of the design document |
-> Maybe DocRev | A desired revision |
-> Context | |
-> m (Result a) |
Get the specified design document
The return value is an object whose fields often vary, so it is most easily decoded as a Value
:
>>>
value :: Result Value <- Design.get "pandas" Nothing ctx
If the specified DocRev matches, returns a JSON Null, otherwise a JSON value for the document.
Status: Complete
:: (FromJSON a, MonadIO m, ToJSON b) | |
=> ModifyDoc | Parameters for the request |
-> DocId | The ID of the design document |
-> Maybe DocRev | A desired revision |
-> b | |
-> Context | |
-> m (Result a) |
Create or replace the specified design document
The return value is an object that can hold "id" and "rev" keys, but if you don't need those values, it is easily decoded into a Bool
with our asBool
combinator:
>>>
value :: Result Bool <- Design.put modifyDoc "pandas" Nothing SomeValue ctx >>= asBool
Status: Complete
:: (FromJSON a, MonadIO m) | |
=> ModifyDoc | Parameters for the request |
-> DocId | The ID of the design document |
-> Maybe DocRev | A desired revision |
-> Context | |
-> m (Result a) |
Delete the specified design document
The return value is an object that can hold "id" and "rev" keys, but if you don't need those values, it is easily decoded into a Bool
with our asBool
combinator:
>>>
value :: Result Bool <- Design.delete modifyDoc "pandas" Nothing ctx >>= asBool
Status: Complete
:: (FromJSON a, MonadIO m) | |
=> ModifyDoc | Parameters for the request |
-> DocId | The ID of the design document |
-> Maybe DocRev | A desired revision |
-> DocId | |
-> Context | |
-> m (Result a) |
Copy the specified design document
The return value is an object that can hold "id" and "rev" keys, but if you don't need those values, it is easily decoded into a Bool
with our asBool
combinator:
>>>
value :: Result Bool <- Design.delete modifyDoc "pandas" Nothing ctx >>= asBool
Status: Complete
Get information on a design document
The return value is an object whose fields often vary, so it is most easily decoded as a Value
:
>>>
value :: Result Value <- Design.info "pandas" ctx
Status: Complete
:: (FromJSON a, MonadIO m) | |
=> ViewParams | Parameters for the request |
-> DocId | The ID of the design document |
-> DocId | The ID of the view |
-> Context | |
-> m (Result a) |
Get a list of all database documents
The return value is an object whose fields often vary, so it is most easily decoded as a Value
:
>>>
value :: Result Value <- Design.allDocs viewParams "pandas" "counter" ctx
Status: Complete
:: (FromJSON a, MonadIO m) | |
=> ViewParams | Parameters for the request |
-> DocId | The ID of the design document |
-> DocId | The ID of the view |
-> [DocId] | The IDs of the documents of interest |
-> Context | |
-> m (Result a) |
Get a list of some database documents
The return value is an object whose fields often vary, so it is most easily decoded as a Value
:
>>>
value :: Result Value <- Design.someDocs viewParams "pandas" "counter" ["a", "b"] ctx
Status: Complete
Internal combinators
viewBase :: ViewParams -> DocId -> DocId -> RequestBuilder () Source
Base bits for all view queries