couchdb-conduit-0.2.0: Couch DB client library using http-conduit and aeson

Database.CouchDB.Conduit.View

Contents

Description

Higher-level functions to interact with CouchDB views. To manipulate views in design documents see Database.CouchDB.Conduit.Design

Synopsis

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.

couchViewSource

Arguments

:: MonadCouch m 
=> Path

Design document

-> Path

View name

-> Query

Query parameters

-> ResourceT m (Source m Object) 

Run CouchDB view in manner like http.

 runCouch def {couchDB="mydb"} $ do

     -- Print all upon receipt.
     src <- couchView "mydesign" "myview" [] 
     src $$ CL.mapM_ (liftIO . print)

     -- ... Or extract row value and consume
     src' <- couchView "mydesign" "myview" [] 
     res <- src' $= rowValue $$ CL.consume

couchView'Source

Arguments

:: MonadCouch m 
=> Path

Design document

-> Path

View name

-> Query

Query parameters

-> Sink Object m a

Sink for handle view rows.

-> ResourceT m a 

Brain-free version of couchView. Takes Sink to consume response.

 runCouch def {couchDB="mydb"} $ do

     -- Print all upon receipt.
     couchView' "mydesign" "myview" [] $ CL.mapM_ (liftIO . print)

     -- ... Or extract row value and consume
     res <- couchView' "mydesign" "myview" [] $ rowValue =$ CL.consume

rowValue :: ResourceIO m => Conduit Object m ValueSource

Conduit for extract "value" field from CouchDB view row.