packages feed

apiary-persistent 1.1.1 → 1.2.0

raw patch · 2 files changed

+48/−54 lines, 2 filesdep ~apiarydep ~apiary-loggerPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: apiary, apiary-logger

API changes (from Hackage documentation)

- Web.Apiary.Database.Persist: instance (Has Persist exts, MonadBaseControl IO m) => RunSQL (ActionT exts prms m)
- Web.Apiary.Database.Persist: instance (Has Persist exts, MonadBaseControl IO m, Monad actM) => RunSQL (ApiaryT exts prms actM m)
+ Web.Apiary.Database.Persist: instance (Has Persist es, MonadExts es m, MonadBaseControl IO m) => RunSQL m
- Web.Apiary.Database.Persist: sql :: (Has Persist exts, MonadBaseControl IO actM, NotMember k prms) => Maybe Html -> proxy k -> SqlPersistT (ActionT exts prms actM) a -> (a -> Maybe b) -> ApiaryT exts ((k := b) : prms) actM m () -> ApiaryT exts prms actM m ()
+ Web.Apiary.Database.Persist: sql :: (KnownSymbol k, Has Persist exts, MonadBaseControl IO actM, NotMember k prms) => Maybe Html -> proxy k -> SqlPersistT (ActionT exts prms actM) a -> (a -> Maybe b) -> ApiaryT exts ((k := b) : prms) actM m () -> ApiaryT exts prms actM m ()

Files

apiary-persistent.cabal view
@@ -1,5 +1,5 @@ name:                apiary-persistent-version:             1.1.1+version:             1.2.0 synopsis:            persistent support for apiary web framework. description:   example: <https://github.com/philopon/apiary/blob/master/examples/persistent.hs>@@ -21,8 +21,8 @@   build-depends:       base               >=4.6   && <4.8                      , persistent         >=2.1   && <2.2 -                     , apiary             >=1.1   && <1.2-                     , apiary-logger      >=1.1.1 && <1.2+                     , apiary             >=1.2   && <1.3+                     , apiary-logger      >=1.2   && <1.3                       , resourcet          >=1.1   && <1.2                      , resource-pool      >=0.2   && <0.3
src/Web/Apiary/Database/Persist.hs view
@@ -1,16 +1,11 @@-{-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeOperators #-}-{-# LANGUAGE DataKinds #-} {-# LANGUAGE Rank2Types #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE QuasiQuotes #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE GADTs #-} {-# LANGUAGE LambdaCase #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE GADTs #-}  module Web.Apiary.Database.Persist     ( Persist@@ -26,32 +21,34 @@     , sql     ) where -import Data.Pool-import Control.Monad-import Control.Monad.Apiary-import Control.Monad.Logger-import Control.Monad.Trans.Reader-import Control.Monad.Trans.Control-import Web.Apiary.Logger+import qualified Data.Pool as Pool+import Control.Monad(void, mzero)+import Control.Monad.IO.Class(MonadIO(..))+import Control.Monad.Logger(NoLoggingT(runNoLoggingT))+import Control.Monad.Trans.Reader(runReaderT)+import Control.Monad.Trans.Control(MonadBaseControl)+import Web.Apiary.Logger(LogWrapper, runLogWrapper) -import Database.Persist.Sql+import qualified Database.Persist.Sql as Sql -import Web.Apiary-import Control.Monad.Apiary.Action-import Control.Monad.Apiary.Filter+import Web.Apiary(Html)+import Control.Monad.Apiary(ApiaryT)+import Control.Monad.Apiary.Action(ActionT, getParams)+import Control.Monad.Apiary.Filter(focus, Doc(DocPrecondition)) import qualified Data.Apiary.Dict as Dict-import Data.Apiary.Compat+import Data.Apiary.Compat(Proxy(..), KnownSymbol) import Data.Apiary.Extension+    (Has, Initializer, initializer, Extensions, Extension, MonadExts, getExt)  data Migrator-    = Logging Migration-    | Silent  Migration-    | Unsafe  Migration+    = Logging Sql.Migration+    | Silent  Sql.Migration+    | Unsafe  Sql.Migration     | NoMigrate  data Persist-    = PersistPool ConnectionPool-    | PersistConn SqlBackend+    = PersistPool Sql.ConnectionPool+    | PersistConn Sql.SqlBackend  instance Extension Persist @@ -59,7 +56,7 @@  initPersist' :: (MonadIO n, MonadBaseControl IO n, Monad m)               => (forall a. Extensions exts -> n a -> m a)-             -> With SqlBackend n -> Migrator -> Initializer m exts (Persist ': exts)+             -> With Sql.SqlBackend n -> Migrator -> Initializer m exts (Persist ': exts) initPersist' run with migr = initializer $ \es -> run es $     with $ \conn -> do         doMigration migr conn@@ -73,62 +70,59 @@ -- initPersist (withSqliteConn "db.sqlite") migrateAll -- @ initPersist :: (MonadIO m, MonadBaseControl IO m) -            => With SqlBackend (LogWrapper exts m) -> Migration+            => With Sql.SqlBackend (LogWrapper exts m) -> Sql.Migration             -> Initializer m exts (Persist ': exts) initPersist with = initPersist' runLogWrapper with . Logging  initPersistNoLog :: (MonadIO m, MonadBaseControl IO m) -                 => With SqlBackend (NoLoggingT m)-                 -> Migration -> Initializer m es (Persist ': es)+                 => With Sql.SqlBackend (NoLoggingT m)+                 -> Sql.Migration -> Initializer m es (Persist ': es) initPersistNoLog with = initPersist' (const runNoLoggingT) with . Silent  initPersistPool' :: (MonadIO n, MonadBaseControl IO n, Monad m)                  => (forall a. Extensions exts -> n a -> m a)-                 -> With ConnectionPool n -> Migrator -> Initializer m exts (Persist ': exts)+                 -> With Sql.ConnectionPool n -> Migrator -> Initializer m exts (Persist ': exts) initPersistPool' run with migr = initializer $ \es -> run es $     with $ \pool -> do-        withResource pool $ doMigration migr+        Pool.withResource pool $ doMigration migr         return (PersistPool pool)  initPersistPool :: (MonadIO m, MonadBaseControl IO m)-                => With ConnectionPool (LogWrapper exts m) -> Migration+                => With Sql.ConnectionPool (LogWrapper exts m) -> Sql.Migration                 -> Initializer m exts (Persist ': exts) initPersistPool with = initPersistPool' runLogWrapper with . Logging  initPersistPoolNoLog :: (MonadIO m, MonadBaseControl IO m)-                     => With ConnectionPool (NoLoggingT m)-                     -> Migration -> Initializer m es (Persist ': es)+                     => With Sql.ConnectionPool (NoLoggingT m)+                     -> Sql.Migration -> Initializer m es (Persist ': es) initPersistPoolNoLog with = initPersistPool' (const runNoLoggingT) with . Silent -doMigration :: (MonadIO m, MonadBaseControl IO m) => Migrator -> SqlBackend -> m ()+doMigration :: (MonadIO m, MonadBaseControl IO m) => Migrator -> Sql.SqlBackend -> m () doMigration migr conn = case migr of-    Logging m -> runReaderT (runMigration m) conn-    Silent  m -> runReaderT (void (runMigrationSilent m)) conn-    Unsafe  m -> runReaderT (runMigrationUnsafe m) conn+    Logging m -> runReaderT (Sql.runMigration m) conn+    Silent  m -> runReaderT (void $ Sql.runMigrationSilent m) conn+    Unsafe  m -> runReaderT (Sql.runMigrationUnsafe m) conn     NoMigrate -> return ()  -- | execute sql in action. class RunSQL m where-    runSql :: SqlPersistT m a -> m a+    runSql :: Sql.SqlPersistT m a -> m a -runSql' :: MonadBaseControl IO m => SqlPersistT m a -> Persist -> m a+runSql' :: MonadBaseControl IO m => Sql.SqlPersistT m a -> Persist -> m a runSql' a persist = case persist of-    PersistPool p -> runSqlPool a p-    PersistConn c -> runSqlConn a c+    PersistPool p -> Sql.runSqlPool a p+    PersistConn c -> Sql.runSqlConn a c -instance (Has Persist exts, MonadBaseControl IO m) => RunSQL (ActionT exts prms m) where+instance (Has Persist es, MonadExts es m, MonadBaseControl IO m) => RunSQL m where     runSql a = getExt (Proxy :: Proxy Persist) >>= runSql' a -instance (Has Persist exts, MonadBaseControl IO m, Monad actM) => RunSQL (ApiaryT exts prms actM m) where-    runSql a = apiaryExt (Proxy :: Proxy Persist) >>= runSql' a- -- | filter by sql query. since 0.9.0.0.-sql :: (Has Persist exts, MonadBaseControl IO actM, Dict.NotMember k prms)+sql :: (KnownSymbol k, Has Persist exts, MonadBaseControl IO actM, Dict.NotMember k prms)     => Maybe Html -- ^ documentation.     -> proxy k-    -> SqlPersistT (ActionT exts prms actM) a+    -> Sql.SqlPersistT (ActionT exts prms actM) a     -> (a -> Maybe b) -- ^ result check function. Nothing: fail filter, Just a: success filter and add parameter.-    -> ApiaryT exts (k := b ': prms) actM m () -> ApiaryT exts prms actM m ()+    -> ApiaryT exts (k Dict.:= b ': prms) actM m () -> ApiaryT exts prms actM m () sql doc k q p = focus (maybe id DocPrecondition doc) $ do     fmap p (runSql q) >>= \case         Nothing -> mzero