release key

This commit is contained in:
Matt Parsons 2017-06-21 11:09:37 -06:00
parent 0c6bba7026
commit 2fa9760d51

View File

@ -53,10 +53,10 @@ module Database.Esqueleto.Internal.Sql
import Control.Arrow ((***), first)
import Control.Exception (throw, throwIO)
import Control.Monad (ap, MonadPlus(..), join, void)
import Control.Monad (ap, MonadPlus(..), void)
import Control.Monad.IO.Class (MonadIO(..))
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Resource (MonadResource)
import Control.Monad.Trans.Resource (MonadResource, release)
import Data.Acquire (with, allocateAcquire, Acquire)
import Data.Int (Int64)
import Data.List (intersperse)
@ -782,9 +782,11 @@ selectSource :: ( SqlSelect a r
, MonadResource m )
=> SqlQuery a
-> C.Source (SqlPersistT m) r
selectSource query = join . lift $ do
res <- rawSelectSource SELECT query
snd <$> allocateAcquire res
selectSource query = do
res <- lift $ rawSelectSource SELECT query
(key, src) <- lift $ allocateAcquire res
src
lift $ release key
-- | Execute an @esqueleto@ @SELECT@ query inside @persistent@'s
-- 'SqlPersistT' monad and return a list of rows.