diff --git a/src/Database/Esqueleto/Internal/Language.hs b/src/Database/Esqueleto/Internal/Language.hs index 4226170..95ebe00 100644 --- a/src/Database/Esqueleto/Internal/Language.hs +++ b/src/Database/Esqueleto/Internal/Language.hs @@ -53,6 +53,11 @@ import qualified Data.ByteString as B import qualified Data.Text as T import qualified Data.Text.Lazy as TL +class BackendCompatible sup sub + +instance BackendCompatible SqlBackend SqlBackend +instance BackendCompatible SqlBackend SqlReadBackend +instance BackendCompatible SqlBackend SqlWriteBackend -- | Finally tagless representation of @esqueleto@'s EDSL. class (Functor query, Applicative query, Monad query) => @@ -72,12 +77,12 @@ class (Functor query, Applicative query, Monad query) => -- @JOIN@. fromStart :: ( PersistEntity a - , PersistEntityBackend a ~ backend ) + , BackendCompatible backend (PersistEntityBackend a) ) => query (expr (PreprocessedFrom (expr (Entity a)))) -- | (Internal) Same as 'fromStart', but entity may be missing. fromStartMaybe :: ( PersistEntity a - , PersistEntityBackend a ~ backend ) + , BackendCompatible backend (PersistEntityBackend a) ) => query (expr (PreprocessedFrom (expr (Maybe (Entity a))))) -- | (Internal) Do a @JOIN@. fromJoin @@ -1041,13 +1046,13 @@ class Esqueleto query expr backend => FromPreprocess query expr backend a where instance ( Esqueleto query expr backend , PersistEntity val - , PersistEntityBackend val ~ backend + , BackendCompatible backend (PersistEntityBackend val) ) => FromPreprocess query expr backend (expr (Entity val)) where fromPreprocess = fromStart instance ( Esqueleto query expr backend , PersistEntity val - , PersistEntityBackend val ~ backend + , BackendCompatible backend (PersistEntityBackend val) ) => FromPreprocess query expr backend (expr (Maybe (Entity val))) where fromPreprocess = fromStartMaybe