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
, conduit
, resourcet
hs-source-dirs: src/
ghc-options: -Wall

View File

@ -11,7 +11,9 @@ import Control.Applicative (Applicative(..), (<$>))
import Control.Arrow (first)
import Control.Exception (throwIO)
import Control.Monad (ap)
import Control.Monad.IO.Class (MonadIO(..))
import Control.Monad.Logger (MonadLogger)
import Control.Monad.Trans.Resource (MonadResourceBase)
import Data.List (intersperse)
import Data.Monoid (Monoid(..), (<>))
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
-- 'SqlPersist' monad.
selectSource :: ( SqlSelect a r
, C.MonadResource m
, MonadLogger m
, MonadIO m )
=> SqlQuery a -> SqlPersist m (C.Source (SqlPersist m) r)
, MonadResourceBase m )
=> SqlQuery a -> SqlPersist m (C.Source (C.ResourceT (SqlPersist m)) r)
selectSource query = src
where
src = do
@ -177,13 +178,12 @@ selectSource query = src
-- | Execute an Esqueleto's 'SqlQuery' inside @persistent@'s
-- 'SqlPersist' monad.
select :: ( SqlSelect a r
, C.MonadResource m
, MonadLogger m
, MonadIO m )
, MonadResourceBase m )
=> SqlQuery a -> SqlPersist m [r]
select query = do
src <- selectSource query
src C.$$ CL.consume
C.runResourceT $ src C.$$ CL.consume
-- | Get current database 'Connection'.