如何让 esqueleto 从 from
语句生成 SQL 字符串?
toRawSql
的文档说“您可以打开持久查询日志记录”。我尝试了所有可能的 MonadLogger
形式,我可以理解,但它从来没有打印任何 SQL。同样的文档还说“手动使用这个函数... ... 是可能的,但是很繁琐”。但是,没有导出类型的构造函数,也没有返回类型 QueryType
值的函数。通过注意到 QueryType
是 newtype
并使用 unsafeCoerce
,我设法绕过了这个问题!
我还被迫提供了一个 Connection
(这是我通过 SQLite 得到的) ,即使没有必要连接到数据库来生成 SQL。
我只有这个办法,一定有更好的办法。
withSqliteConn ":memory:" $
\conn -> return $ toRawSql SELECT
(unsafeCoerce ((const mempty)
:: a -> Text.Lazy.Builder.Builder))
(conn, initialIdentState) myFromStatement)
Http://hackage.haskell.org/package/esqueleto-1.3.4.2/docs/database-esqueleto-internal-sql.html