`local' method for MonadReader of SqlPersistT

This commit is contained in:
Chris Done 2014-05-26 12:06:36 +02:00
parent 3e17fb00df
commit 8cb0212f8b

View File

@ -17,6 +17,7 @@ import qualified Network.Wai.Middleware.RequestLogger as RequestLogger
import qualified Database.Persist import qualified Database.Persist
import Control.Monad.Logger (runLoggingT, LoggingT) import Control.Monad.Logger (runLoggingT, LoggingT)
import Control.Monad.Reader (runReaderT, ReaderT) import Control.Monad.Reader (runReaderT, ReaderT)
import Control.Monad.Trans.Control
import Control.Concurrent (forkIO, threadDelay) import Control.Concurrent (forkIO, threadDelay)
import System.Log.FastLogger (newStdoutLoggerSet, defaultBufSize, flushLogStr) import System.Log.FastLogger (newStdoutLoggerSet, defaultBufSize, flushLogStr)
import Network.Wai.Logger (clockDateCacher) import Network.Wai.Logger (clockDateCacher)
@ -191,6 +192,9 @@ instance MonadActive m => MonadActive (SqlPersistT m) where -- FIXME orphan upst
monadActive = lift monadActive monadActive = lift monadActive
instance MonadReader env m => MonadReader env (SqlPersistT m) where instance MonadReader env m => MonadReader env (SqlPersistT m) where
ask = lift ask ask = lift ask
local f m =
do stT <- liftWith (\run -> local f (run m))
restoreT (return stT)
-- for yesod devel -- for yesod devel
getApplicationDev :: IO (Int, Application) getApplicationDev :: IO (Int, Application)