apiary-mongoDB 1.1.0 → 1.1.1
raw patch · 2 files changed
+22/−10 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Web.Apiary.MongoDB: instance (Has MongoDB exts, MonadBaseControl IO m, MonadIO m) => MongoAccess (ActionT exts prms m)
+ Web.Apiary.MongoDB: instance (Has MongoDB exts, MonadBaseControl IO m, MonadIO m) => MongoAccess (ReaderT (Extensions exts) m)
+ Web.Apiary.MongoDB: instance (Has MongoDB exts, MonadBaseControl IO m, MonadIO m, Monad actM) => MongoAccess (ApiaryT exts prms actM m)
- Web.Apiary.MongoDB: access :: (Has MongoDB exts, MonadBaseControl IO m, MonadIO m) => Action (ActionT exts prms m) a -> ActionT exts prms m a
+ Web.Apiary.MongoDB: access :: MongoAccess m => Action m a -> m a
Files
- apiary-mongoDB.cabal +1/−1
- src/Web/Apiary/MongoDB.hs +21/−9
apiary-mongoDB.cabal view
@@ -1,5 +1,5 @@ name: apiary-mongoDB-version: 1.1.0+version: 1.1.1 synopsis: mongoDB support for apiary web framework. -- description: license: MIT
src/Web/Apiary/MongoDB.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DataKinds #-}@@ -24,8 +25,10 @@ import Control.Monad.Trans.Maybe import Control.Monad.IO.Class import Control.Monad.Trans.Control+import Control.Monad.Trans.Reader import Control.Exception.Lifted import Control.Monad.Apiary.Action+import Control.Monad.Apiary import Web.Apiary import Web.Apiary.Heroku@@ -109,12 +112,21 @@ -- | query using 'MongoDBConfig' settings. -- -- if you want to access other db, other accessmode, please use 'useDb' or 'accessMode'.-access :: (Has MongoDB exts, MonadBaseControl IO m, MonadIO m)- => Action (ActionT exts prms m) a -> ActionT exts prms m a-access m = do- MongoDB mongo conf <- getExt (Proxy :: Proxy MongoDB)- withResource mongo $ \p ->- MongoDB.access p (mongoDBAccessMode conf) (mongoDBDatabase conf) $- maybe (return True) (uncurry auth) (mongoDBAuth conf)- >>= flip unless (throwIO $ ConnectionFailure $ userError "auth failed.")- >> m+class MongoAccess m where+ access :: Action m a -> m a++accessImpl :: (MonadBaseControl IO m, MonadIO m) => Action m a -> MongoDB -> m a+accessImpl m (MongoDB mongo conf) = withResource mongo $ \p ->+ MongoDB.access p (mongoDBAccessMode conf) (mongoDBDatabase conf) $+ maybe (return True) (uncurry auth) (mongoDBAuth conf)+ >>= flip unless (throwIO $ ConnectionFailure $ userError "auth failed.")+ >> m++instance (Has MongoDB exts, MonadBaseControl IO m, MonadIO m) => MongoAccess (ActionT exts prms m) where+ access m = getExt (Proxy :: Proxy MongoDB) >>= accessImpl m++instance (Has MongoDB exts, MonadBaseControl IO m, MonadIO m, Monad actM) => MongoAccess (ApiaryT exts prms actM m) where+ access m = apiaryExt (Proxy :: Proxy MongoDB) >>= accessImpl m++instance (Has MongoDB exts, MonadBaseControl IO m, MonadIO m) => MongoAccess (ReaderT (Extensions exts) m) where+ access m = ask >>= accessImpl m . getExtension (Proxy :: Proxy MongoDB)