[英]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腳手架,則提供handler
和db
函數以分別從repl運行處理程序操作和數據庫查詢:
$ cabal repl
db $ selectList [UserName ==. "foo"] []
編輯:我還使用此信息更新了Yesod在GHCi上的維基頁面 。 它包含更多示例並涵蓋了一些高級用法,例如使用調試器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.