Hello community, here is the log from the commit of package ghc-esqueleto for openSUSE:Factory checked in at 2017-07-06 00:02:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ghc-esqueleto (Old) and /work/SRC/openSUSE:Factory/.ghc-esqueleto.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-esqueleto" Thu Jul 6 00:02:27 2017 rev:6 rq:508021 version:2.5.3 Changes: -------- --- /work/SRC/openSUSE:Factory/ghc-esqueleto/ghc-esqueleto.changes 2017-06-22 10:37:22.943089390 +0200 +++ /work/SRC/openSUSE:Factory/.ghc-esqueleto.new/ghc-esqueleto.changes 2017-07-06 00:02:34.505267621 +0200 @@ -1,0 +2,5 @@ +Sun Jun 25 18:41:37 UTC 2017 - [email protected] + +- Update to version 2.5.3. + +------------------------------------------------------------------- Old: ---- esqueleto-2.5.2.tar.gz New: ---- esqueleto-2.5.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ghc-esqueleto.spec ++++++ --- /var/tmp/diff_new_pack.DIZtck/_old 2017-07-06 00:02:37.000916043 +0200 +++ /var/tmp/diff_new_pack.DIZtck/_new 2017-07-06 00:02:37.000916043 +0200 @@ -19,7 +19,7 @@ %global pkg_name esqueleto %bcond_with tests Name: ghc-%{pkg_name} -Version: 2.5.2 +Version: 2.5.3 Release: 0 Summary: Type-safe EDSL for SQL queries on persistent backends License: BSD-3-Clause ++++++ esqueleto-2.5.2.tar.gz -> esqueleto-2.5.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/esqueleto-2.5.2/esqueleto.cabal new/esqueleto-2.5.3/esqueleto.cabal --- old/esqueleto-2.5.2/esqueleto.cabal 2017-05-25 18:57:00.000000000 +0200 +++ new/esqueleto-2.5.3/esqueleto.cabal 2017-06-22 06:37:41.000000000 +0200 @@ -1,5 +1,5 @@ name: esqueleto -version: 2.5.2 +version: 2.5.3 synopsis: Type-safe EDSL for SQL queries on persistent backends. homepage: https://github.com/bitemyapp/esqueleto license: BSD3 @@ -66,7 +66,7 @@ base >= 4.8 && < 5.0 , bytestring , text >= 0.11 && < 1.3 - , persistent >= 2.5 && < 2.8 + , persistent >= 2.5 && < 2.8 , transformers >= 0.2 , unordered-containers >= 0.2 , tagged >= 0.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/esqueleto-2.5.2/src/Database/Esqueleto/Internal/Sql.hs new/esqueleto-2.5.3/src/Database/Esqueleto/Internal/Sql.hs --- old/esqueleto-2.5.2/src/Database/Esqueleto/Internal/Sql.hs 2017-05-25 18:52:09.000000000 +0200 +++ new/esqueleto-2.5.3/src/Database/Esqueleto/Internal/Sql.hs 2017-06-22 06:37:15.000000000 +0200 @@ -53,10 +53,10 @@ 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 @@ , 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. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/esqueleto-2.5.2/test/Test.hs new/esqueleto-2.5.3/test/Test.hs --- old/esqueleto-2.5.2/test/Test.hs 2017-05-25 18:59:50.000000000 +0200 +++ new/esqueleto-2.5.3/test/Test.hs 2017-06-22 06:37:15.000000000 +0200 @@ -44,6 +44,8 @@ import Database.Persist.TH import Test.Hspec +import Data.Conduit (($$), Source, (=$=)) +import qualified Data.Conduit.List as CL import qualified Control.Monad.Trans.Resource as R import qualified Data.List as L import qualified Data.Set as S @@ -168,6 +170,44 @@ ret <- select $ return nothing liftIO $ ret `shouldBe` [ Value (Nothing :: Maybe Int) ] + describe "selectSource" $ do + it "works for a simple example" $ + run $ do + let query = selectSource $ + from $ \person -> + return person + p1e <- insert' p1 + ret <- query $$ CL.consume + liftIO $ ret `shouldBe` [ p1e ] + + it "can run a query many times" $ + run $ do + let query = selectSource $ + from $ \person -> + return person + p1e <- insert' p1 + ret0 <- query $$ CL.consume + ret1 <- query $$ CL.consume + liftIO $ ret0 `shouldBe` [ p1e ] + liftIO $ ret1 `shouldBe` [ p1e ] + + it "works on repro" $ do + let selectPerson :: R.MonadResource m => String -> Source (SqlPersistT m) (Key Person) + selectPerson name = do + let source = selectSource $ from $ \person -> do + where_ $ person ^. PersonName ==. val name + return $ person ^. PersonId + source =$= CL.map unValue + run $ do + p1e <- insert' p1 + p2e <- insert' p2 + r1 <- selectPerson (personName p1) $$ CL.consume + r2 <- selectPerson (personName p2) $$ CL.consume + liftIO $ do + r1 `shouldBe` [ entityKey p1e ] + r2 `shouldBe` [ entityKey p2e ] + + describe "select/from" $ do it "works for a simple example" $ run $ do
