首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wai与经纱结合使用MySQL

Wai与经纱结合使用MySQL
EN

Code Review用户
提问于 2018-07-25 23:28:27
回答 1查看 113关注 0票数 1

我想知道下面是否是将Wai与数据库池相结合的正确约定。

我基本上要做的是,创建一个池,部分应用Pool -> Application类型的函数,并使用它将其传递给Warp的run。它看起来还好吗,还是我来重构它?

代码语言:javascript
复制
{-# 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
    run 8080 $ app $ pool
EN

回答 1

Code Review用户

发布于 2018-08-07 08:04:52

恐怕没有什么可移除的了。$putStrLn之后以及apppool之间是多余的。您可以编写最后两行run 8080 . app <$> getPool。我会给getPool打个内联。您可能对https://github.com/alevy/simple/blob/master/simple/src/Web/Simple.hs#L134的样板还原感兴趣。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/200310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档