yesod-worker-0.1.0.0: src/Yesod/Worker/Site.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
module Yesod.Worker.Site where
import Control.Concurrent
import qualified Data.ByteString.Char8 as BSC
import Data.Maybe (fromMaybe)
import qualified Data.Map as Map
import Database.Redis
import Keenser
import Text.Blaze (ToMarkup(..))
import Yesod
import Yesod.Worker.Types
import Yesod.Worker.Util
instance ToMarkup BSC.ByteString where
toMarkup = toMarkup . BSC.unpack
type WorkerH a = forall master . YesodWorker master => HandlerT Workers (HandlerT master IO) a
mkYesodSubData "Workers" [parseRoutes|
/ HomeR GET
|]
getHomeR :: WorkerH Html
getHomeR = do
Workers{..} <- getYesod
mm <- liftIO $ tryReadMVar wManager
case mm of
Just m -> do
ManagerStatus{..} <- checkStatus m wRedis
let info = Map.fromList sState
get key = fromMaybe "" $ Map.lookup key info
lift $ defaultLayout $(whamletFile "templates/home.hamlet")
_ -> do
$(logError) "No manager running"
return "No manager running"