use a compatibility class

This commit is contained in:
Matt Parsons 2017-09-13 16:27:18 -06:00
parent 91ea0b0fca
commit dbf53c31fb

View File

@ -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