有没有类似runDB但在Handler monad之外?

时间:2014-01-12 23:09:27

标签: haskell websocket yesod

我正在使用Yesod 1.2开发一个Web应用程序,我正在使用websockets。对websocket的请求需要查询我的数据库,并且为了进行这些查询,我知道它们必须在PersistStore实例中。据我所知,我不能使用runDB,因为websockets请求处理程序不在Handler monad中。相反,为此我可以使用与this问题的答案中的代码类似的东西。

在脚手架网站中获取PersistStore monad的最简洁方法是什么?我知道我可以使用硬编码的连接字符串轻松地拍摄runSqlite并完成它,但我认为这很难看。如果由于任何原因我想要更改数据库引擎,我不想修改我连接到数据库的每一段代码。

我正在寻找一种方法来使用脚手架网站在连接到数据库时为我做的事情,以免重复代码。

1 个答案:

答案 0 :(得分:1)

运行此方法的最佳方式可能与脚手架网站runs the migration code的方式相同:

-- Perform database migration using our application's logging settings.
runLoggingT
    (Database.Persist.runPool dbconf (runMigration migrateAll) p)
    (messageLoggerSource foundation logger)