Как я могу получить esqueleto для создания строки SQL из инструкции from
?Как я могу получить esqueleto для создания строки 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
Я считаю, что причина, по которой вам нужно дать ему соединение, заключается в том, что он является полиморфным в базе данных и использует выведенные экземпляры 'SqlPersist' для генерации строк SQL, специфичных для баз данных. – Thomas
Однако соединение и тип базовой базы данных - это разные вещи. Должна быть возможность генерировать строку SQL чисто. –