Jak uzyskać esqueleto do generowania ciągu SQL z from
instrukcji?
Dokumentacja toRawSql
mó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 QueryType
są eksportowane. Udało mi się to obejść, zauważając, że QueryType
to jest newtype
i 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
SqlPersist
instancji do generowania ciągów SQL specyficznych dla bazy danych.