yesod-persistent 1.2.3 → 1.2.3.1
raw patch · 3 files changed
+49/−8 lines, 3 filesdep ~persistentdep ~persistent-templatePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: persistent, persistent-template
API changes (from Hackage documentation)
- Yesod.Persist.Core: DBRunner :: (forall a. YesodPersistBackend site (HandlerT site IO) a -> HandlerT site IO a) -> DBRunner site
+ Yesod.Persist.Core: DBRunner :: (forall a. YesodDB site a -> HandlerT site IO a) -> DBRunner site
- Yesod.Persist.Core: respondSourceDB :: YesodPersistRunner site => ContentType -> Source (YesodPersistBackend site (HandlerT site IO)) (Flush Builder) -> HandlerT site IO TypedContent
+ Yesod.Persist.Core: respondSourceDB :: YesodPersistRunner site => ContentType -> Source (YesodDB site) (Flush Builder) -> HandlerT site IO TypedContent
- Yesod.Persist.Core: runDB :: YesodPersist site => YesodPersistBackend site (HandlerT site IO) a -> HandlerT site IO a
+ Yesod.Persist.Core: runDB :: YesodPersist site => YesodDB site a -> HandlerT site IO a
- Yesod.Persist.Core: runDBRunner :: DBRunner site -> forall a. YesodPersistBackend site (HandlerT site IO) a -> HandlerT site IO a
+ Yesod.Persist.Core: runDBRunner :: DBRunner site -> forall a. YesodDB site a -> HandlerT site IO a
- Yesod.Persist.Core: runDBSource :: YesodPersistRunner site => Source (YesodPersistBackend site (HandlerT site IO)) a -> Source (HandlerT site IO) a
+ Yesod.Persist.Core: runDBSource :: YesodPersistRunner site => Source (YesodDB site) a -> Source (HandlerT site IO) a
Files
- Yesod/Persist/Core.hs +40/−5
- test/Yesod/PersistSpec.hs +6/−0
- yesod-persistent.cabal +3/−3
Yesod/Persist/Core.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} {-# OPTIONS_GHC -fno-warn-orphans #-}@@ -19,8 +20,10 @@ ) where import Database.Persist+#if !MIN_VERSION_persistent(2, 0, 0) import Database.Persist.Sql (SqlPersistT, unSqlPersistT)-import Control.Monad.Trans.Reader (runReaderT)+#endif+import Control.Monad.Trans.Reader (ReaderT, runReaderT) import Yesod.Core import Data.Conduit@@ -31,11 +34,25 @@ import Yesod.Core.Types (HandlerContents (HCError)) import qualified Database.Persist.Sql as SQL +#if MIN_VERSION_persistent(2, 0, 0)+unSqlPersistT :: a -> a+unSqlPersistT = id+#endif++#if MIN_VERSION_persistent(2, 0, 0)+type YesodDB site = ReaderT (YesodPersistBackend site) (HandlerT site IO)+#else type YesodDB site = YesodPersistBackend site (HandlerT site IO)+#endif +#if MIN_VERSION_persistent(2, 0, 0)+class Monad (YesodDB site) => YesodPersist site where+ type YesodPersistBackend site+#else class Monad (YesodPersistBackend site (HandlerT site IO)) => YesodPersist site where type YesodPersistBackend site :: (* -> *) -> * -> *- runDB :: YesodPersistBackend site (HandlerT site IO) a -> HandlerT site IO a+#endif+ runDB :: YesodDB site a -> HandlerT site IO a -- | Helper for creating 'runDB'. --@@ -71,13 +88,17 @@ getDBRunner :: HandlerT site IO (DBRunner site, HandlerT site IO ()) newtype DBRunner site = DBRunner- { runDBRunner :: forall a. YesodPersistBackend site (HandlerT site IO) a -> HandlerT site IO a+ { runDBRunner :: forall a. YesodDB site a -> HandlerT site IO a } -- | Helper for implementing 'getDBRunner'. -- -- Since 1.2.0+#if MIN_VERSION_persistent(2, 0, 0)+defaultGetDBRunner :: YesodPersistBackend site ~ SQL.SqlBackend+#else defaultGetDBRunner :: YesodPersistBackend site ~ SqlPersistT+#endif => (site -> Pool SQL.Connection) -> HandlerT site IO (DBRunner site, HandlerT site IO ()) defaultGetDBRunner getPool = do@@ -106,7 +127,7 @@ -- -- Since 1.2.0 runDBSource :: YesodPersistRunner site- => Source (YesodPersistBackend site (HandlerT site IO)) a+ => Source (YesodDB site) a -> Source (HandlerT site IO) a runDBSource src = do (dbrunner, cleanup) <- lift getDBRunner@@ -116,11 +137,16 @@ -- | Extends 'respondSource' to create a streaming database response body. respondSourceDB :: YesodPersistRunner site => ContentType- -> Source (YesodPersistBackend site (HandlerT site IO)) (Flush Builder)+ -> Source (YesodDB site) (Flush Builder) -> HandlerT site IO TypedContent respondSourceDB ctype = respondSource ctype . runDBSource -- | Get the given entity by ID, or return a 404 not found if it doesn't exist.+#if MIN_VERSION_persistent(2, 0, 0)+get404 :: (MonadIO m, PersistStore (PersistEntityBackend val), PersistEntity val)+ => Key val+ -> ReaderT (PersistEntityBackend val) m val+#else get404 :: ( PersistStore (t m) , PersistEntity val , Monad (t m)@@ -129,6 +155,7 @@ , PersistMonadBackend (t m) ~ PersistEntityBackend val ) => Key val -> t m val+#endif get404 key = do mres <- get key case mres of@@ -137,6 +164,11 @@ -- | Get the given entity by unique key, or return a 404 not found if it doesn't -- exist.+#if MIN_VERSION_persistent(2, 0, 0)+getBy404 :: (PersistUnique (PersistEntityBackend val), PersistEntity val, MonadIO m)+ => Unique val+ -> ReaderT (PersistEntityBackend val) m (Entity val)+#else getBy404 :: ( PersistUnique (t m) , PersistEntity val , m ~ HandlerT site IO@@ -145,6 +177,7 @@ , PersistEntityBackend val ~ PersistMonadBackend (t m) ) => Unique val -> t m (Entity val)+#endif getBy404 key = do mres <- getBy key case mres of@@ -156,8 +189,10 @@ notFound' :: MonadIO m => m a notFound' = liftIO $ throwIO $ HCError NotFound +#if !MIN_VERSION_persistent(2, 0, 0) instance MonadHandler m => MonadHandler (SqlPersistT m) where type HandlerSite (SqlPersistT m) = HandlerSite m liftHandlerT = lift . liftHandlerT instance MonadWidget m => MonadWidget (SqlPersistT m) where liftWidgetT = lift . liftWidgetT+#endif
test/Yesod/PersistSpec.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE OverloadedStrings, TemplateHaskell, QuasiQuotes, TypeFamilies #-} {-# LANGUAGE EmptyDataDecls, FlexibleContexts, GADTs #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE CPP #-} module Yesod.PersistSpec where import Test.Hspec@@ -27,7 +29,11 @@ instance Yesod App instance YesodPersist App where+#if MIN_VERSION_persistent(2, 0, 0)+ type YesodPersistBackend App = SqlBackend+#else type YesodPersistBackend App = SqlPersistT+#endif runDB = defaultRunDB appConfig appPool instance YesodPersistRunner App where getDBRunner = defaultGetDBRunner appPool
yesod-persistent.cabal view
@@ -1,5 +1,5 @@ name: yesod-persistent-version: 1.2.3+version: 1.2.3.1 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>@@ -15,8 +15,8 @@ library build-depends: base >= 4 && < 5 , yesod-core >= 1.2.2 && < 1.3- , persistent >= 1.2 && < 1.4- , persistent-template >= 1.2 && < 1.4+ , persistent >= 1.2 && < 2.1+ , persistent-template >= 1.2 && < 2.1 , transformers >= 0.2.2 , blaze-builder , conduit