Jak uzyskać esqueleto do generowania ciągu SQL z frominstrukcji?
Dokumentacja toRawSqlmówi, że „możesz po prostu włączyć trwałe logowanie zapytań”. Wypróbowałem wszystkie możliwe formy tego MonadLogger, co mogłem zrozumieć, ale nigdy nie wydrukowałem żadnego SQL. Ta sama dokumentacja mówi również, że „ręczne użycie tej funkcji ... jest możliwe, ale żmudne”. Jednak żadne konstruktory tego typu ani żadne funkcje zwracające wartości typu nie QueryTypesą eksportowane. Udało mi się to obejść, zauważając, że QueryTypeto jest newtypei używając unsafeCoerce!
Zostałem również zmuszony do dostarczenia Connection(które otrzymałem przez SQLite), mimo że nie powinno być potrzeby łączenia się z bazą danych w celu wygenerowania SQL.
Oto, co mam. Musi być lepszy sposób.
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
SqlPersistinstancji do generowania ciągów SQL specyficznych dla bazy danych.