-- | Types to define Hablog over ScottyT

{-# LANGUAGE OverloadedStrings #-}

module Web.Hablog.Types where

import Data.Text.Lazy (Text)
import Web.Scotty.Trans (ScottyT, ActionT)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Reader (ReaderT, ask)

import Web.Hablog.Config (Config)

type Hablog = ScottyT Text (ReaderT Config IO)
type HablogAction = ActionT Text (ReaderT Config IO)

getCfg :: HablogAction Config
getCfg :: HablogAction Config
getCfg = ReaderT Config IO Config -> HablogAction Config
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift ReaderT Config IO Config
forall (m :: * -> *) r. Monad m => ReaderT r m r
ask