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