@@ -64,6 +64,7 @@ module Squeal.PostgreSQL.PQ
64import Control.Exception.Lifted
64import Control.Exception.Lifted
65import Control.Monad.Base
65import Control.Monad.Base
66import Control.Monad.Except
66import Control.Monad.Except
67+import Control.Monad.Morph
67import Control.Monad.Trans.Control
68import Control.Monad.Trans.Control
68import Data.ByteString (ByteString)
69import Data.ByteString (ByteString)
69import Data.Foldable
70import Data.Foldable
@@ -475,11 +476,18 @@ instance Monad m => Monad (PQ schema schema m) where
475 return = pure
476 return = pure
476 (>>=) = flip pqBind
477 (>>=) = flip pqBind
479+instance MFunctor (PQ schema schema) where
480+ hoist f (PQ pq) = PQ (f . pq)
478instance MonadTrans (PQ schema schema) where
482instance MonadTrans (PQ schema schema) where
479 lift m = PQ $ \ _conn -> do
483 lift m = PQ $ \ _conn -> do
481 return (K x)
485 return (K x)
487+instance MMonad (PQ schema schema) where
488+ embed f (PQ pq) = PQ $ \ conn -> do
489+ evalPQ (f (pq conn)) conn
483instance MonadBase b m => MonadBase b (PQ schema schema m) where
491instance MonadBase b m => MonadBase b (PQ schema schema m) where
484 liftBase = lift . liftBase
492 liftBase = lift . liftBase