module Database.CouchDB.Conduit.DB (
couchPutDB,
couchPutDB',
couchDeleteDB
) where
import Prelude hiding (catch)
import Control.Exception.Lifted (catch)
import qualified Data.ByteString as B
import Data.Conduit (ResourceT, resourceThrow)
import qualified Network.HTTP.Conduit as H
import qualified Network.HTTP.Types as HT
import Database.CouchDB.Conduit (MonadCouch(..), CouchError(..), Path)
import Database.CouchDB.Conduit.LowLevel (couch, protect')
import Control.Monad.Trans.Class (lift)
couchPutDB :: MonadCouch m =>
Path
-> ResourceT m ()
couchPutDB p = couch HT.methodPut p [] []
(H.RequestBodyBS B.empty) protect'
>> return ()
couchPutDB' :: MonadCouch m =>
Path
-> ResourceT m ()
couchPutDB' p =
catch (couchPutDB p) handler
where
handler (CouchError (Just 412) _) = return ()
handler e = lift $ resourceThrow e
couchDeleteDB :: MonadCouch m =>
Path
-> ResourceT m ()
couchDeleteDB p = couch HT.methodDelete p [] []
(H.RequestBodyBS B.empty) protect'
>> return ()