Correctly consume connection resources.

This commit is contained in:
Felipe Lessa 2012-09-04 00:27:47 -03:00
parent 7ebb2d87bf
commit dc6bcda8e4
2 changed files with 7 additions and 6 deletions

View File

@ -27,6 +27,7 @@ library
, monad-logger , monad-logger
, conduit , conduit
, resourcet
hs-source-dirs: src/ hs-source-dirs: src/
ghc-options: -Wall ghc-options: -Wall

View File

@ -11,7 +11,9 @@ import Control.Applicative (Applicative(..), (<$>))
import Control.Arrow (first) import Control.Arrow (first)
import Control.Exception (throwIO) import Control.Exception (throwIO)
import Control.Monad (ap) import Control.Monad (ap)
import Control.Monad.IO.Class (MonadIO(..))
import Control.Monad.Logger (MonadLogger) import Control.Monad.Logger (MonadLogger)
import Control.Monad.Trans.Resource (MonadResourceBase)
import Data.List (intersperse) import Data.List (intersperse)
import Data.Monoid (Monoid(..), (<>)) import Data.Monoid (Monoid(..), (<>))
import Database.Persist.EntityDef import Database.Persist.EntityDef
@ -149,10 +151,9 @@ binop _ _ _ = error "Esqueleto/Sql/binop: never here (see GHC #6124)"
-- | Execute an Esqueleto's 'SqlQuery' inside @persistent@'s -- | Execute an Esqueleto's 'SqlQuery' inside @persistent@'s
-- 'SqlPersist' monad. -- 'SqlPersist' monad.
selectSource :: ( SqlSelect a r selectSource :: ( SqlSelect a r
, C.MonadResource m
, MonadLogger m , MonadLogger m
, MonadIO m ) , MonadResourceBase m )
=> SqlQuery a -> SqlPersist m (C.Source (SqlPersist m) r) => SqlQuery a -> SqlPersist m (C.Source (C.ResourceT (SqlPersist m)) r)
selectSource query = src selectSource query = src
where where
src = do src = do
@ -177,13 +178,12 @@ selectSource query = src
-- | Execute an Esqueleto's 'SqlQuery' inside @persistent@'s -- | Execute an Esqueleto's 'SqlQuery' inside @persistent@'s
-- 'SqlPersist' monad. -- 'SqlPersist' monad.
select :: ( SqlSelect a r select :: ( SqlSelect a r
, C.MonadResource m
, MonadLogger m , MonadLogger m
, MonadIO m ) , MonadResourceBase m )
=> SqlQuery a -> SqlPersist m [r] => SqlQuery a -> SqlPersist m [r]
select query = do select query = do
src <- selectSource query src <- selectSource query
src C.$$ CL.consume C.runResourceT $ src C.$$ CL.consume
-- | Get current database 'Connection'. -- | Get current database 'Connection'.