esqueleto でfromステートメントから SQL 文字列を生成するにはどうすればよいですか?
のドキュメントにtoRawSqlは、「永続的なクエリ ログをオンにするだけでよい」と記載されています。理解できるすべての可能な形式を試しMonadLoggerましたが、SQLを出力しませんでした。同じドキュメントには、「この関数を手動で使用することは...可能ですが面倒です」とも書かれています。ただし、型のコンストラクターも型の値を返す関数QueryTypeもエクスポートされません。QueryTypeであることに気づき、!newtypeを使用することで、なんとかこれを回避できました。unsafeCoerce
Connectionまた、SQL を生成するためにデータベースに接続する必要がないにもかかわらず、(SQLite 経由で取得した) を提供することを余儀なくされました。
これは私が持っているものです。もっと良い方法があるはずです。
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