Как я могу заставить esqueleto сгенерировать строку SQL из fromоператора?
В документации 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
SqlPersistэкземпляры для генерации строк SQL, специфичных для базы данных.