Safe Haskell | None |
---|
Higher-level functions to interact with CouchDB views.
To automate creation of CouchDB Query Options see Database.CouchDB.Conduit.View.Query
To manipulate views in design documents see Database.CouchDB.Conduit.Design
- couchView :: MonadCouch m => Path -> Path -> Path -> Query -> m (Source m Object)
- couchView_ :: MonadCouch m => Path -> Path -> Path -> Query -> Sink Object m a -> m a
- couchViewPost :: (MonadCouch m, ToJSON a) => Path -> Path -> Path -> Query -> a -> m (Source m Object)
- couchViewPost_ :: (MonadCouch m, ToJSON a) => Path -> Path -> Path -> Query -> a -> Sink Object m a -> m a
- rowValue :: Monad m => Conduit Object m Value
- rowDoc :: Monad m => Conduit Object m Value
- rowField :: Monad m => Text -> Conduit Object m Value
Acccessing views
In contrast to the functions of access to documents that are loaded into
memory entirely. couchView
and couchView'
combines the incredible power
of http-conduit and attoparsec to allow you to process objects in
constant space.
As data is read from the network, it is fed into attoparsec. When
attoparsec completes parsing row, it sent to Sink
. Sink
can be composed
from many conduits with sink at the end, such as rowValue
, view conduits
from Database.CouchDB.Conduit.Explicit and
Database.CouchDB.Conduit.Generic, and many others. See
Data.Conduit for details and documentation.
:: MonadCouch m | |
=> Path | Database |
-> Path | Design document |
-> Path | View name |
-> Query | Query parameters |
-> m (Source m Object) |
Run CouchDB view in manner like http
.
runCouch def $ do -- Print all upon receipt. src <- couchView "mydb" "mydesign" "myview" [] src $$ CL.mapM_ (liftIO . print) -- ... Or extract row value and consume src' <- couchView "mydb" "mydesign" "myview" [] res <- src' $= rowValue $$ CL.consume
:: (MonadCouch m, ToJSON a) | |
=> Path | Database |
-> Path | Design document |
-> Path | View name |
-> Query | Query parameters |
-> a | View |
-> m (Source m Object) |
Run CouchDB view in manner like http
using POST
(since CouchDB 0.9).
It's convenient in case that keys
paremeter too big for GET
query
string. Other query parameters used as usual.
runCouch def $ do src <- couchViewPost "mydb" "mydesign" "myview" (mkQuery [QPGroup]) ["key1", "key2", "key3"] src $$ CL.mapM_ (liftIO . print)
:: (MonadCouch m, ToJSON a) | |
=> Path | Database |
-> Path | Design document |
-> Path | View name |
-> Query | Query parameters |
-> a | View |
-> Sink Object m a | Sink for handle view rows. |
-> m a |
Brain-free version of couchViewPost
. Takes Sink
to consume response.
rowValue :: Monad m => Conduit Object m ValueSource
Conduit for extract "value" field from CouchDB view row.