Support for Lucid HTML, add static file middleware

This commit is contained in:
James Eversole
2024-10-21 17:26:25 -05:00
parent a9d5d9171a
commit 77131c4add
8 changed files with 76 additions and 21 deletions

View File

@@ -6,24 +6,25 @@ import Handlers
import Logger
import Routes
import Control.Monad.Except (ExceptT (ExceptT))
import Control.Monad.Except (ExceptT (ExceptT))
import Data.List
import Effectful
import Effectful.Error.Static (Error, runErrorNoCallStack, throwError)
import Effectful.Error.Static (Error, runErrorNoCallStack, throwError)
import Effectful.Reader.Static
import Network.Wai.Handler.Warp (run)
import Servant hiding ((:>), throwError)
import qualified Servant as S
import Network.Wai.Handler.Warp (run)
import Network.Wai.Middleware.Static ((>->), staticPolicy, noDots, addBase)
import Servant hiding ((:>), throwError)
import qualified Servant as S
--
-- Application
--
main :: IO ()
main = do
pool <- createConnectionPool
pool <- createConnectionPool "host=localhost dbname=demo"
let env = AppEnv { pool = pool }
runAppEff env $ databaseInit
run port . serve proxy $ app env
run port . middleware . serve proxy $ app env
app :: AppEnv -> Server AppAPI
app env = hoistServer proxy (Handler . ExceptT . runAppEff env) handlers
@@ -35,6 +36,9 @@ handlers = rootHandler
:<|> userPostHandler
:<|> userDeleteHandler
middleware :: Application -> Application
middleware = staticPolicy (noDots >-> addBase "data/assets/public")
runAppEff :: AppEnv -> AppEff a -> IO (Either ServerError a)
runAppEff env = runEff
. runErrorNoCallStack