apiary-mongoDB 1.1.1 → 1.2.0
raw patch · 2 files changed
+31/−36 lines, 2 filesdep ~apiaryPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: apiary
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 :: MongoAccess m => Action m a -> m a
+ Web.Apiary.MongoDB: access :: (MonadExts es m, Has MongoDB es, MonadBaseControl IO m, MonadIO m) => Action m a -> m a
Files
- apiary-mongoDB.cabal +2/−2
- src/Web/Apiary/MongoDB.hs +29/−34
apiary-mongoDB.cabal view
@@ -1,5 +1,5 @@ name: apiary-mongoDB-version: 1.1.1+version: 1.2.0 synopsis: mongoDB support for apiary web framework. -- description: license: MIT@@ -19,7 +19,7 @@ exposed-modules: Web.Apiary.MongoDB other-modules: build-depends: base >=4.6 && <4.8- , apiary >=1.1 && <1.2+ , apiary >=1.2 && <1.3 , mongoDB >=2.0 && <2.1 , resource-pool >=0.2 && <0.3 , data-default-class >=0.0 && <0.1
src/Web/Apiary/MongoDB.hs view
@@ -1,10 +1,9 @@-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE TypeOperators #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeOperators #-} {-# LANGUAGE Rank2Types #-}+{-# LANGUAGE DataKinds #-} module Web.Apiary.MongoDB ( MongoDB, MongoDBConfig(..), MongoQuery@@ -19,27 +18,27 @@ , module Database.MongoDB.Admin ) where -import Control.Arrow-import Control.Applicative-import Control.Monad-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 Control.Arrow(first)+import Control.Applicative((<|>))+import Control.Monad(unless)+import Control.Monad.Trans.Maybe(MaybeT(MaybeT, runMaybeT))+import Control.Monad.IO.Class(MonadIO(liftIO))+import Control.Monad.Trans.Control(MonadBaseControl)+import Control.Exception.Lifted(bracket, throwIO) -import Web.Apiary-import Web.Apiary.Heroku+import Web.Apiary.Heroku(Heroku, getHerokuEnv') import qualified Database.MongoDB as MongoDB -import Data.Default.Class-import Data.Time(NominalDiffTime)-import Data.Pool-import Data.Apiary.Compat+import Data.Apiary.Compat(Proxy(Proxy)) import Data.Apiary.Extension+ (Has, Initializer', initializerBracket'+ , Initializer, initializerBracket+ , Extension, getExtension, MonadExts, getExt+ )+import Data.Default.Class(Default(def))+import Data.Time(NominalDiffTime)+import qualified Data.Pool as Pool import qualified Data.Text as T import qualified Data.Text.Read as T @@ -50,7 +49,7 @@ type MongoQuery = MongoDB.Query -data MongoDB = MongoDB (Pool Pipe) MongoDBConfig+data MongoDB = MongoDB (Pool.Pool Pipe) MongoDBConfig instance Extension MongoDB data MongoDBConfig = MongoDBConfig@@ -69,9 +68,9 @@ initMongoDB' :: (MonadBaseControl IO m, MonadIO m) => MongoDBConfig -> (MongoDB -> m a) -> m a initMongoDB' conf@MongoDBConfig{..} m =- bracket (liftIO bra) (liftIO . destroyAllResources) (\a -> m (MongoDB a conf))+ bracket (liftIO bra) (liftIO . Pool.destroyAllResources) (\a -> m (MongoDB a conf)) where- bra = createPool (MongoDB.connect' mongoDBTimeout mongoDBHost)+ bra = Pool.createPool (MongoDB.connect' mongoDBTimeout mongoDBHost) MongoDB.close 1 connectionIdleTime numConnection initMongoDB :: (MonadIO m, MonadBaseControl IO m)@@ -112,21 +111,17 @@ -- | query using 'MongoDBConfig' settings. -- -- if you want to access other db, other accessmode, please use 'useDb' or 'accessMode'.-class MongoAccess m where- access :: Action m a -> m a+access :: (MonadExts es m, Has MongoDB es, MonadBaseControl IO m, MonadIO m)+ => Action m a -> m a+access m = getExt (Proxy :: Proxy MongoDB) >>= flip access' m -accessImpl :: (MonadBaseControl IO m, MonadIO m) => Action m a -> MongoDB -> m a-accessImpl m (MongoDB mongo conf) = withResource mongo $ \p ->++access' :: (MonadBaseControl IO m, MonadIO m)+ => MongoDB -> Action m a -> m a+access' (MongoDB mongo conf) m = Pool.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)