Làm cách nào tôi có thể lấy esqueleto để tạo chuỗi SQL từ một from
câu lệnh?
Tài liệu của toRawSql
nói rằng "bạn chỉ có thể bật ghi nhật ký truy vấn của liên tục". Tôi đã thử tất cả các dạng có thể MonadLogger
mà tôi có thể hiểu được, nhưng nó không bao giờ in ra bất kỳ SQL nào. Tài liệu tương tự cũng nói rằng "sử dụng chức năng này theo cách thủ công ... là có thể nhưng tẻ nhạt". Tuy nhiên, không có hàm tạo nào của kiểu hoặc bất kỳ hàm nào trả về giá trị của kiểu QueryType
được xuất. Tôi đã xoay sở để vượt qua điều này bằng cách nhận thấy đó QueryType
là một newtype
và sử dụng unsafeCoerce
!
Tôi cũng buộc phải cung cấp một Connection
(mà tôi nhận được qua SQLite) mặc dù không cần phải kết nối với cơ sở dữ liệu để tạo SQL.
Đây là những gì tôi có. Phải có cách tốt hơn.
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
SqlPersist
phiên bản được suy luận để tạo các chuỗi SQL cụ thể cho datasbase.