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

Safe HaskellNone

Database.CouchDB.Conduit.View

Contents

Description

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

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

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

couchView_Source

Arguments

:: MonadCouch m 
=> Path

Database

-> Path

Design document

-> Path

View name

-> Query

Query parameters

-> Sink Object m a

Sink for handle view rows.

-> m a 

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

 runCouch def $ do

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

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

couchViewPostSource

Arguments

:: (MonadCouch m, ToJSON a) 
=> Path

Database

-> Path

Design document

-> Path

View name

-> Query

Query parameters

-> a

View keys. Must be list or cortege.

-> 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)

couchViewPost_Source

Arguments

:: (MonadCouch m, ToJSON a) 
=> Path

Database

-> Path

Design document

-> Path

View name

-> Query

Query parameters

-> a

View keys. Must be list or cortege.

-> 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.

rowDoc :: Monad m => Conduit Object m ValueSource

Conduit for extract "doc" field from CouchDB view row. Use only with include_docs=true query parameter.

rowField :: Monad m => Text -> Conduit Object m ValueSource

Extract field from view row