簡體   English   中英

如何在REPL中運行Yesod的DB操作?

[英]How can I run Yesod's DB actions in the REPL?

在普通的Handler工作流中很容易運行DB操作,因為runDB函數可用於將SqlPersistM操作轉換為Handler操作。

但是沒有這種方法可以使用默認的應用程序設置將SqlPersistM直接轉換為IO 查看在應用程序腳手架中定義的Foundation.hs ,有以下實例

instance YesodPersist App where
    type YesodPersistBackend App = SqlBackend
    runDB action = do
        master <- getYesod
        runSqlPool action $ appConnPool master
instance YesodPersistRunner App where
    getDBRunner = defaultGetDBRunner appConnPool

它基本上使用runSqlPool和應用程序的配置,但我沒有看到如何利用它來訪問REPL中的配置表單的簡單方法。

TL; DR: 我正在尋找的只是能夠在我的Yesod應用程序中從cabal repl中執行類似runDB $ selectList [...] [...] ,而無需復制Yesod搭建板的設置盒子外面。

如果您正在使用Yesod腳手架,則提供handlerdb函數以分別從repl運行處理程序操作和數據庫查詢:

$ cabal repl

db $ selectList [UserName ==. "foo"] []

編輯:我還使用此信息更新了Yesod在GHCi的維基頁面 它包含更多示例並涵蓋了一些高級用法,例如使用調試器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM