I was wondering if below is the correct convention for combining Wai with a Database pool.

What I basically do is, create a pool, partially apply a function of type `Pool -> Application` and use it to pass it to Warp's `run`. Does it look ok, or shall I refactor it?

    {-# LANGUAGE OverloadedStrings #-}
    import Network.Wai
    import Network.HTTP.Types
    import Network.Wai.Handler.Warp (run)
    import Database.MySQL.Simple
    import Data.Pool (Pool, createPool, withResource)
    
    newConn = connect defaultConnectInfo 
        { connectHost = "db"
        , connectUser = "root"
        , connectPassword = "secret"
        , connectDatabase = "test" }
    
    getPool = createPool newConn close 1 10 5
    
    app :: Pool Connection -> Application
    app pool _ respond = do
        withResource pool $ \c -> query_ c "SELECT 1" :: IO [Only Int]
        respond $ responseLBS
            status200
            [("Content-Type", "text/plain")]
            "Hello, Web!"
    
    main :: IO ()
    main = do
        putStrLn $ "http://localhost:8080/"
        pool <- getPool
        c <- connect defaultConnectInfo 
            { connectHost = "db"
            , connectUser = "root"
            , connectPassword = "secret"
            , connectDatabase = "test" }
        x <- (query_ c "SELECT 1") :: IO [Only Int]
        run 8080 $ app $ pool