hasql-cursor-query 0.4.4.3 → 0.4.5
raw patch · 16 files changed
+165/−189 lines, 16 filesdep −QuickCheckdep −basedep −quickcheck-instancesdep ~bytestringdep ~hasqldep ~hasql-transactionsetup-changedPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies removed: QuickCheck, base, quickcheck-instances, tasty-quickcheck
Dependency ranges changed: bytestring, hasql, hasql-transaction
API changes (from Hackage documentation)
- Hasql.CursorQuery: data BatchSize
+ Hasql.CursorQuery: data () => BatchSize
Files
- Setup.hs +0/−2
- hasql-cursor-query.cabal +91/−73
- library/Hasql/CursorQuery.hs +10/−12
- library/Hasql/CursorQuery/CursorTransactions.hs +2/−3
- library/Hasql/CursorQuery/Private/CursorQuery.hs +11/−15
- library/Hasql/CursorQuery/Private/CursorTransactions.hs +6/−9
- library/Hasql/CursorQuery/Private/Decoders.hs +2/−4
- library/Hasql/CursorQuery/Private/Prelude.hs +5/−19
- library/Hasql/CursorQuery/Private/Sessions.hs +2/−5
- library/Hasql/CursorQuery/Private/Transactions.hs +2/−5
- library/Hasql/CursorQuery/Sessions.hs +2/−3
- library/Hasql/CursorQuery/Transactions.hs +2/−3
- tasty/Main.hs +18/−20
- tasty/Main/CursorQueries.hs +3/−5
- tasty/Main/IO.hs +5/−6
- tasty/Main/Statements.hs +4/−5
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
hasql-cursor-query.cabal view
@@ -1,96 +1,114 @@-name:- hasql-cursor-query-version:- 0.4.4.3-category:- Hasql, Database, PostgreSQL, Streaming-synopsis:- A declarative abstraction over PostgreSQL Cursor-homepage:- https://github.com/nikita-volkov/hasql-cursor-query -bug-reports:- https://github.com/nikita-volkov/hasql-cursor-query/issues -author:- Nikita Volkov <nikita.y.volkov@mail.ru>-maintainer:- Nikita Volkov <nikita.y.volkov@mail.ru>-copyright:- (c) 2016, Nikita Volkov-license:- MIT-license-file:- LICENSE-build-type:- Simple-cabal-version:- >=1.10-+cabal-version: 3.0+name: hasql-cursor-query+version: 0.4.5+category: Hasql, Database, PostgreSQL, Streaming+synopsis: A declarative abstraction over PostgreSQL Cursor+homepage: https://github.com/nikita-volkov/hasql-cursor-query+bug-reports: https://github.com/nikita-volkov/hasql-cursor-query/issues+author: Nikita Volkov <nikita.y.volkov@mail.ru>+maintainer: Nikita Volkov <nikita.y.volkov@mail.ru>+copyright: (c) 2016, Nikita Volkov+license: MIT+license-file: LICENSE source-repository head- type:- git- location:- git://github.com/nikita-volkov/hasql-cursor-query.git+ type: git+ location: git://github.com/nikita-volkov/hasql-cursor-query.git +common base+ default-language: Haskell2010+ default-extensions:+ Arrows+ BangPatterns+ ConstraintKinds+ DataKinds+ DefaultSignatures+ DeriveDataTypeable+ DeriveFoldable+ DeriveFunctor+ DeriveGeneric+ DeriveTraversable+ EmptyDataDecls+ FlexibleContexts+ FlexibleInstances+ FunctionalDependencies+ GADTs+ GeneralizedNewtypeDeriving+ LambdaCase+ LiberalTypeSynonyms+ MagicHash+ MultiParamTypeClasses+ MultiWayIf+ NoImplicitPrelude+ NoMonomorphismRestriction+ OverloadedStrings+ ParallelListComp+ PatternGuards+ QuasiQuotes+ RankNTypes+ RecordWildCards+ ScopedTypeVariables+ StandaloneDeriving+ TemplateHaskell+ TupleSections+ TypeFamilies+ TypeOperators+ UnboxedTuples -library- hs-source-dirs:- library+common executable+ import: base ghc-options:- default-extensions:- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples- default-language:- Haskell2010+ -O2+ -threaded+ "-with-rtsopts=-N -I0 -qg"++common test+ import: base+ ghc-options:+ -threaded+ "-with-rtsopts=-N -I0 -qg"++library+ import: base+ hs-source-dirs: library other-modules:- Hasql.CursorQuery.Private.Prelude Hasql.CursorQuery.Private.CursorQuery- Hasql.CursorQuery.Private.Decoders- Hasql.CursorQuery.Private.Transactions Hasql.CursorQuery.Private.CursorTransactions+ Hasql.CursorQuery.Private.Decoders+ Hasql.CursorQuery.Private.Prelude Hasql.CursorQuery.Private.Sessions+ Hasql.CursorQuery.Private.Transactions+ exposed-modules:- Hasql.CursorQuery.Transactions+ Hasql.CursorQuery Hasql.CursorQuery.CursorTransactions Hasql.CursorQuery.Sessions- Hasql.CursorQuery- build-depends:- -- database:- hasql >= 1.4 && < 1.5,- hasql-transaction >= 0.7 && < 0.8,- hasql-cursor-transaction >= 0.6 && < 0.7,- -- data:- bytestring >= 0.10 && < 0.11,- -- control:- foldl > 1 && < 2,- profunctors == 5.*,- contravariant >= 1.3 && < 2,- -- general:- base-prelude >= 1 && < 2,- base >= 4.6 && < 5+ Hasql.CursorQuery.Transactions + build-depends:+ base-prelude >=1 && <2,+ bytestring >=0.10 && <0.14,+ contravariant >=1.3 && <2,+ foldl >1 && <2,+ hasql >=1.6 && <1.7,+ hasql-cursor-transaction >=0.6 && <0.7,+ hasql-transaction >=1.1 && <1.2,+ profunctors >=5 && <6, test-suite tasty- type:- exitcode-stdio-1.0- hs-source-dirs:- tasty- main-is:- Main.hs+ import: test+ type: exitcode-stdio-1.0+ hs-source-dirs: tasty+ main-is: Main.hs other-modules: Main.CursorQueries- Main.Statements Main.IO- default-extensions:- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples- default-language:- Haskell2010+ Main.Statements+ build-depends:- foldl >= 1.2 && < 2,+ foldl >=1.2 && <2, hasql, hasql-cursor-query,- QuickCheck >=2.8.1 && <3,- quickcheck-instances >=0.3.11 && <0.4,- rebase < 2,+ rebase <2, tasty >=0.12 && <2, tasty-hunit >=0.9 && <0.11,- tasty-quickcheck >=0.9 && <0.11
library/Hasql/CursorQuery.hs view
@@ -1,19 +1,17 @@ -- | -- A DSL for declaring queries. module Hasql.CursorQuery-(- A.CursorQuery,- A.cursorQuery,- A.ReducingDecoder,- A.reducingDecoder,- B.BatchSize,- B.batchSize_10,- B.batchSize_100,- B.batchSize_1000,- B.batchSize_10000,-)+ ( A.CursorQuery,+ A.cursorQuery,+ A.ReducingDecoder,+ A.reducingDecoder,+ B.BatchSize,+ B.batchSize_10,+ B.batchSize_100,+ B.batchSize_1000,+ B.batchSize_10000,+ ) where import qualified Hasql.CursorQuery.Private.CursorQuery as A import qualified Hasql.CursorTransaction as B-
library/Hasql/CursorQuery/CursorTransactions.hs view
@@ -1,7 +1,6 @@ module Hasql.CursorQuery.CursorTransactions-(- cursorQuery,-)+ ( cursorQuery,+ ) where import Hasql.CursorQuery.Private.CursorTransactions
library/Hasql/CursorQuery/Private/CursorQuery.hs view
@@ -1,24 +1,22 @@-module Hasql.CursorQuery.Private.CursorQuery-where+module Hasql.CursorQuery.Private.CursorQuery where -import Hasql.CursorQuery.Private.Prelude-import qualified Hasql.Encoders as A-import qualified Hasql.Decoders as B import qualified Control.Foldl as D+import Hasql.CursorQuery.Private.Prelude import qualified Hasql.CursorTransaction as H-+import qualified Hasql.Decoders as B+import qualified Hasql.Encoders as A -- | -- A specification of a streaming query.--- +-- -- Provides an abstraction over Postgres Cursor, -- which allows to process result sets of any size in constant memory.--- +-- -- Essentially it is a parametric query specification extended with a reduction strategy and a batch size, -- where reduction strategy determines how to fold the rows into the final result, -- and batch size determines how many rows to fetch during each roundtrip to the database.-data CursorQuery params result =- CursorQuery !ByteString !(A.Params params) !(ReducingDecoder result) !H.BatchSize+data CursorQuery params result+ = CursorQuery !ByteString !(A.Params params) !(ReducingDecoder result) !H.BatchSize instance Profunctor CursorQuery where dimap fn1 fn2 (CursorQuery template encoder decoder batchSize) =@@ -35,13 +33,12 @@ cursorQuery = CursorQuery - -- | -- A specification of how to decode and reduce multiple rows.--- +-- -- Composable with the Applicative interface.-data ReducingDecoder reduction =- forall row. ReducingDecoder !(B.Row row) !(D.Fold row reduction)+data ReducingDecoder reduction+ = forall row. ReducingDecoder !(B.Row row) !(D.Fold row reduction) instance Functor ReducingDecoder where fmap fn (ReducingDecoder rowDecoder rowsFold) =@@ -66,4 +63,3 @@ reducingDecoder :: B.Row row -> D.Fold row reduction -> ReducingDecoder reduction reducingDecoder = ReducingDecoder-
library/Hasql/CursorQuery/Private/CursorTransactions.hs view
@@ -1,21 +1,18 @@-module Hasql.CursorQuery.Private.CursorTransactions-where+module Hasql.CursorQuery.Private.CursorTransactions where -import Hasql.CursorQuery.Private.Prelude+import qualified Control.Foldl as D import qualified Hasql.CursorQuery.Private.CursorQuery as B import qualified Hasql.CursorQuery.Private.Decoders as I-import qualified Hasql.Decoders as E-import qualified Hasql.Encoders as F+import Hasql.CursorQuery.Private.Prelude import qualified Hasql.CursorTransaction as G-import qualified Control.Foldl as D-+import qualified Hasql.Decoders as E -- | -- Fetch and fold the data from cursor until it dries out. fetchAndFoldCursor :: G.Cursor s -> G.BatchSize -> E.Row row -> D.Fold row result -> G.CursorTransaction s result fetchAndFoldCursor cursor batchSize rowDecoder (D.Fold progress enter exit) =- fmap exit $- fetchAndFoldMore enter+ fmap exit+ $ fetchAndFoldMore enter where fetchAndFoldMore batch = do
library/Hasql/CursorQuery/Private/Decoders.hs view
@@ -1,10 +1,8 @@-module Hasql.CursorQuery.Private.Decoders-where+module Hasql.CursorQuery.Private.Decoders where +import qualified Control.Foldl as B import Hasql.CursorQuery.Private.Prelude import qualified Hasql.Decoders as A-import qualified Control.Foldl as B- fold :: B.Fold a b -> A.Row a -> A.Result b fold (B.Fold progress enter exit) rowDecoder =
library/Hasql/CursorQuery/Private/Prelude.hs view
@@ -1,23 +1,9 @@ module Hasql.CursorQuery.Private.Prelude-( - module Exports,-)+ ( module Exports,+ ) where ---- base-prelude---------------------------import BasePrelude as Exports hiding (assert, left, right, isLeft, isRight, error)---- profunctors---------------------------import Data.Profunctor.Unsafe as Exports---- contravariant---------------------------import Data.Functor.Contravariant as Exports-import Data.Functor.Contravariant.Divisible as Exports---- bytestring--------------------------+import BasePrelude as Exports hiding (assert, error, isLeft, isRight, left, right) import Data.ByteString as Exports (ByteString)+import Data.Functor.Contravariant.Divisible as Exports+import Data.Profunctor.Unsafe as Exports
library/Hasql/CursorQuery/Private/Sessions.hs view
@@ -1,16 +1,13 @@-module Hasql.CursorQuery.Private.Sessions-where+module Hasql.CursorQuery.Private.Sessions where -import Hasql.CursorQuery.Private.Prelude import qualified Hasql.CursorQuery.Private.CursorQuery as B import qualified Hasql.CursorQuery.Private.CursorTransactions as C import qualified Hasql.CursorTransaction.Sessions as A import qualified Hasql.Session as D - -- | -- Executes CursorQuery in Session provided the parameters.--- +-- -- During the execution it establishes a Read transaction with the ReadCommitted isolation level. cursorQuery :: params -> B.CursorQuery params result -> D.Session result cursorQuery params cursorQuery =
library/Hasql/CursorQuery/Private/Transactions.hs view
@@ -1,12 +1,9 @@-module Hasql.CursorQuery.Private.Transactions-where+module Hasql.CursorQuery.Private.Transactions where -import Hasql.CursorQuery.Private.Prelude import qualified Hasql.CursorQuery.Private.CursorQuery as B import qualified Hasql.CursorQuery.Private.CursorTransactions as C-import qualified Hasql.Transaction as A import qualified Hasql.CursorTransaction.Transactions as D-+import qualified Hasql.Transaction as A -- | -- Executes CursorQuery in Transaction provided the parameters.
library/Hasql/CursorQuery/Sessions.hs view
@@ -1,7 +1,6 @@ module Hasql.CursorQuery.Sessions-(- cursorQuery,-)+ ( cursorQuery,+ ) where import Hasql.CursorQuery.Private.Sessions
library/Hasql/CursorQuery/Transactions.hs view
@@ -1,7 +1,6 @@ module Hasql.CursorQuery.Transactions-(- cursorQuery,-)+ ( cursorQuery,+ ) where import Hasql.CursorQuery.Private.Transactions
tasty/Main.hs view
@@ -1,29 +1,27 @@ module Main where -import Rebase.Prelude-import Test.Tasty-import Test.Tasty.Runners-import Test.Tasty.HUnit-import qualified Hasql.Session as A import qualified Hasql.CursorQuery.Sessions as C+import qualified Hasql.Session as A import qualified Main.CursorQueries as D-import qualified Main.Statements as E import qualified Main.IO as F-+import qualified Main.Statements as E+import Rebase.Prelude+import Test.Tasty+import Test.Tasty.HUnit+import Test.Tasty.Runners main :: IO () main = defaultMain $- localOption (NumThreads 1) $- testGroup "All tests"- [- testCase "Amount" $- do- (count1, count2) <- F.session ((,) <$> A.statement () E.countPGType <*> C.cursorQuery () D.countPGType)- assertEqual (show (count1, count2)) count1 count2- ,- testCase "Equality" $- do- (result1, result2) <- F.session ((,) <$> A.statement () E.slectOIDAndTypeName <*> C.cursorQuery () D.slectOIDAndTypeName)- assertEqual (show (result1, result2)) result1 result2- ]+ localOption (NumThreads 1) $+ testGroup+ "All tests"+ [ testCase "Amount" $+ do+ (count1, count2) <- F.session ((,) <$> A.statement () E.countPGType <*> C.cursorQuery () D.countPGType)+ assertEqual (show (count1, count2)) count1 count2,+ testCase "Equality" $+ do+ (result1, result2) <- F.session ((,) <$> A.statement () E.slectOIDAndTypeName <*> C.cursorQuery () D.slectOIDAndTypeName)+ assertEqual (show (result1, result2)) result1 result2+ ]
tasty/Main/CursorQueries.hs view
@@ -1,11 +1,10 @@ module Main.CursorQueries where -import Rebase.Prelude+import qualified Control.Foldl as C import Hasql.CursorQuery-import qualified Hasql.Encoders as A import qualified Hasql.Decoders as B-import qualified Control.Foldl as C-+import qualified Hasql.Encoders as A+import Rebase.Prelude countPGType :: CursorQuery () Int countPGType =@@ -38,4 +37,3 @@ (,) <$> (B.column . B.nonNullable) B.int8 <*> (B.column . B.nonNullable) B.text fold = C.list-
tasty/Main/IO.hs view
@@ -1,14 +1,13 @@ module Main.IO where -import Rebase.Prelude-import qualified Hasql.Session as A import qualified Hasql.Connection as B-+import qualified Hasql.Session as A+import Rebase.Prelude session :: A.Session a -> IO a session session =- withConnection (A.run session) >>=- either (fail . show) (either (fail . show) return)+ withConnection (A.run session)+ >>= either (fail . show) (either (fail . show) return) where withConnection :: (B.Connection -> IO a) -> IO (Either B.ConnectionError a) withConnection handler =@@ -23,7 +22,7 @@ host = "localhost" port = 5432 user = "postgres"- password = ""+ password = "postgres" database = "postgres" use connection = lift $ handler connection
tasty/Main/Statements.hs view
@@ -1,10 +1,9 @@ module Main.Statements where -import Rebase.Prelude-import Hasql.Statement-import qualified Hasql.Encoders as A import qualified Hasql.Decoders as B-+import qualified Hasql.Encoders as A+import Hasql.Statement+import Rebase.Prelude countPGType :: Statement () Int countPGType =@@ -16,7 +15,7 @@ A.noParams decoder = (B.singleRow . B.column . B.nonNullable . fmap fromIntegral) B.int8- + slectOIDAndTypeName :: Statement () [(Int64, Text)] slectOIDAndTypeName = Statement sql encoder decoder True