From 8cb0212f8b4ed58c2b63ce78575ba44d668116f5 Mon Sep 17 00:00:00 2001 From: Chris Done Date: Mon, 26 May 2014 12:06:36 +0200 Subject: [PATCH] `local' method for MonadReader of SqlPersistT --- Application.hs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Application.hs b/Application.hs index 67a7ba5..a4fc4e2 100644 --- a/Application.hs +++ b/Application.hs @@ -17,6 +17,7 @@ import qualified Network.Wai.Middleware.RequestLogger as RequestLogger import qualified Database.Persist import Control.Monad.Logger (runLoggingT, LoggingT) import Control.Monad.Reader (runReaderT, ReaderT) +import Control.Monad.Trans.Control import Control.Concurrent (forkIO, threadDelay) import System.Log.FastLogger (newStdoutLoggerSet, defaultBufSize, flushLogStr) import Network.Wai.Logger (clockDateCacher) @@ -191,6 +192,9 @@ instance MonadActive m => MonadActive (SqlPersistT m) where -- FIXME orphan upst monadActive = lift monadActive instance MonadReader env m => MonadReader env (SqlPersistT m) where ask = lift ask + local f m = + do stT <- liftWith (\run -> local f (run m)) + restoreT (return stT) -- for yesod devel getApplicationDev :: IO (Int, Application)