hasql-cursor-transaction 0.6.4 → 0.6.5
raw patch · 10 files changed
+133/−116 lines, 10 filesdep ~bytestringdep ~contravariantdep ~contravariant-extrassetup-changedPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: bytestring, contravariant, contravariant-extras, hasql, hasql-transaction, transformers
API changes (from Hackage documentation)
- Hasql.CursorTransaction.Transactions: cursorTransaction :: () => (forall s. () => CursorTransaction s result) -> Transaction result
+ Hasql.CursorTransaction.Transactions: cursorTransaction :: (forall s. () => CursorTransaction s result) -> Transaction result
Files
- Setup.hs +0/−2
- hasql-cursor-transaction.cabal +53/−15
- library/Hasql/CursorTransaction.hs +20/−19
- library/Hasql/CursorTransaction/Private/CursorTransaction.hs +22/−23
- library/Hasql/CursorTransaction/Private/Prelude.hs +6/−22
- library/Hasql/CursorTransaction/Private/Specs.hs +6/−9
- library/Hasql/CursorTransaction/Private/Statements.hs +15/−11
- library/Hasql/CursorTransaction/Private/Transactions.hs +3/−5
- library/Hasql/CursorTransaction/Sessions.hs +5/−6
- library/Hasql/CursorTransaction/Transactions.hs +3/−4
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
hasql-cursor-transaction.cabal view
@@ -1,5 +1,6 @@+cabal-version: 3.0 name: hasql-cursor-transaction-version: 0.6.4+version: 0.6.5 category: Hasql, Database, PostgreSQL, Streaming synopsis: An abstraction for simultaneous fetching from multiple PostgreSQL cursors homepage: https://github.com/nikita-volkov/hasql-cursor-transaction@@ -9,30 +10,67 @@ copyright: (c) 2016, Nikita Volkov license: MIT license-file: LICENSE-build-type: Simple-cabal-version: >=1.10 library hs-source-dirs: library- 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+ 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+ other-modules:+ Hasql.CursorTransaction.Private.CursorTransaction Hasql.CursorTransaction.Private.Prelude- Hasql.CursorTransaction.Private.Statements Hasql.CursorTransaction.Private.Specs+ Hasql.CursorTransaction.Private.Statements Hasql.CursorTransaction.Private.Transactions- Hasql.CursorTransaction.Private.CursorTransaction+ exposed-modules:- Hasql.CursorTransaction.Transactions- Hasql.CursorTransaction.Sessions Hasql.CursorTransaction+ Hasql.CursorTransaction.Sessions+ Hasql.CursorTransaction.Transactions+ build-depends: base >=4.9 && <5, base-prelude >=1 && <2,- bytestring >=0.10 && <0.11,- bytestring-tree-builder ==0.2.*,- contravariant >=1.3 && <2,- contravariant-extras >=0.3.3.1 && <0.4,- hasql >=1.4 && <1.5,- hasql-transaction >=0.7 && <0.8,- transformers >=0.4 && <0.6+ bytestring >=0.10 && <0.14,+ bytestring-tree-builder >=0.2 && <0.3,+ contravariant >=1.5 && <2,+ contravariant-extras >=0.3.5.4 && <0.4,+ hasql ^>=1.6.4.1,+ hasql-transaction ^>=1.1,+ transformers >=0.4 && <0.7,
library/Hasql/CursorTransaction.hs view
@@ -1,24 +1,25 @@ module Hasql.CursorTransaction-(- -- * Types- A.CursorTransaction,- A.Cursor,- B.BatchSize,- B.EncodedParams,- -- * Cursor Transactions- A.declareCursor,- A.fetchBatch,- A.transaction,- -- * Batch Sizes- B.batchSize_10,- B.batchSize_100,- B.batchSize_1000,- B.batchSize_10000,- -- * Encoded Params- B.encodedParams,-)+ ( -- * Types+ A.CursorTransaction,+ A.Cursor,+ B.BatchSize,+ B.EncodedParams,++ -- * Cursor Transactions+ A.declareCursor,+ A.fetchBatch,+ A.transaction,++ -- * Batch Sizes+ B.batchSize_10,+ B.batchSize_100,+ B.batchSize_1000,+ B.batchSize_10000,++ -- * Encoded Params+ B.encodedParams,+ ) where import qualified Hasql.CursorTransaction.Private.CursorTransaction as A import qualified Hasql.CursorTransaction.Private.Specs as B-
library/Hasql/CursorTransaction/Private/CursorTransaction.hs view
@@ -1,44 +1,43 @@-module Hasql.CursorTransaction.Private.CursorTransaction-where+module Hasql.CursorTransaction.Private.CursorTransaction where +import qualified ByteString.TreeBuilder as E import Hasql.CursorTransaction.Private.Prelude-import qualified Hasql.Transaction as A-import qualified Hasql.Encoders as D-import qualified Hasql.Decoders as F-import qualified Hasql.CursorTransaction.Private.Transactions as C import qualified Hasql.CursorTransaction.Private.Specs as G-import qualified ByteString.TreeBuilder as E-+import qualified Hasql.CursorTransaction.Private.Transactions as C+import qualified Hasql.Decoders as F+import qualified Hasql.Encoders as D+import qualified Hasql.Transaction as A -- | -- Context for fetching from multiple cursors in an intertwined fashion.-newtype CursorTransaction s result =- CursorTransaction (StateT (Int, A.Transaction ()) A.Transaction result)+newtype CursorTransaction s result+ = CursorTransaction (StateT (Int, A.Transaction ()) A.Transaction result) deriving (Functor, Applicative, Monad) -- | -- Cursor reference.-newtype Cursor s =- Cursor ByteString+newtype Cursor s+ = Cursor ByteString -- | -- Given a template and encoded params produces a cursor, -- while automating its resource management. declareCursor :: ByteString -> G.EncodedParams -> CursorTransaction s (Cursor s) declareCursor template (G.EncodedParams (Supplied encoder params)) =- CursorTransaction $- do- name <- state $ do- (inc, finaliser) <- id- name <- return (incToName inc)- newFinaliser <- return (finaliser *> C.closeCursor name)- return (name, (succ inc, newFinaliser))- lift (C.declareCursor name template encoder params)- return (Cursor name)+ CursorTransaction+ $ do+ name <- state $ do+ (inc, finaliser) <- id+ name <- return (incToName inc)+ newFinaliser <- return (finaliser *> C.closeCursor name)+ return (name, (succ inc, newFinaliser))+ lift (C.declareCursor name template encoder params)+ return (Cursor name) where incToName inc =- E.toByteString $- E.byteString "Hasql_CursorTransaction_" <> E.asciiIntegral inc+ E.toByteString+ $ E.byteString "Hasql_CursorTransaction_"+ <> E.asciiIntegral inc -- | -- Fetch from a cursor a batch of the given size and decode it using the specified result decoder.
library/Hasql/CursorTransaction/Private/Prelude.hs view
@@ -1,16 +1,10 @@ module Hasql.CursorTransaction.Private.Prelude-( - module Exports,-)+ ( module Exports,+ ) where ---- base-prelude---------------------------import BasePrelude as Exports hiding (assert, left, right, isLeft, isRight, error)---- transformers--------------------------+import BasePrelude as Exports hiding (assert, error, isLeft, isRight, left, right)+import Contravariant.Extras as Exports import Control.Monad.IO.Class as Exports import Control.Monad.Trans.Class as Exports import Control.Monad.Trans.Cont as Exports hiding (shift)@@ -19,17 +13,7 @@ import Control.Monad.Trans.Reader as Exports hiding (liftCallCC) import Control.Monad.Trans.State.Strict as Exports hiding (liftCatch, liftListen, liftPass) import Control.Monad.Trans.Writer.Strict as Exports hiding (liftCallCC, liftCatch)-import Data.Functor.Identity as Exports---- contravariant--------------------------+import Data.ByteString as Exports (ByteString) import Data.Functor.Contravariant as Exports import Data.Functor.Contravariant.Divisible as Exports---- contravariant-extras---------------------------import Contravariant.Extras as Exports---- bytestring---------------------------import Data.ByteString as Exports (ByteString)+import Data.Functor.Identity as Exports
library/Hasql/CursorTransaction/Private/Specs.hs view
@@ -1,15 +1,13 @@-module Hasql.CursorTransaction.Private.Specs-where+module Hasql.CursorTransaction.Private.Specs where import Hasql.CursorTransaction.Private.Prelude-import qualified Hasql.Encoders as A import qualified Hasql.Decoders as B-+import qualified Hasql.Encoders as A -- | -- Spefifies how many rows to fetch in a single DB roundtrip.-newtype BatchSize =- BatchSize Int64+newtype BatchSize+ = BatchSize Int64 -- | -- Batch size of 10.@@ -35,11 +33,10 @@ batchSize_10000 = BatchSize 10000 - -- | -- A parameters encoder immediately supplied with parameters.-newtype EncodedParams =- EncodedParams (Supplied A.Params)+newtype EncodedParams+ = EncodedParams (Supplied A.Params) deriving (Semigroup, Monoid) -- |
library/Hasql/CursorTransaction/Private/Statements.hs view
@@ -1,21 +1,22 @@-module Hasql.CursorTransaction.Private.Statements-where+module Hasql.CursorTransaction.Private.Statements where +import qualified ByteString.TreeBuilder as D import Hasql.CursorTransaction.Private.Prelude-import Hasql.Statement-import qualified Hasql.Encoders as B-import qualified Hasql.Decoders as C import qualified Hasql.CursorTransaction.Private.Specs as F-import qualified ByteString.TreeBuilder as D-+import qualified Hasql.Decoders as C+import qualified Hasql.Encoders as B+import Hasql.Statement declareCursor :: ByteString -> ByteString -> B.Params a -> Statement a () declareCursor name sql encoder = Statement sql' encoder C.noResult False where sql' =- D.toByteString $- "DECLARE " <> D.byteString name <> " NO SCROLL CURSOR FOR " <> D.byteString sql+ D.toByteString+ $ "DECLARE "+ <> D.byteString name+ <> " NO SCROLL CURSOR FOR "+ <> D.byteString sql closeCursor :: ByteString -> Statement () () closeCursor name =@@ -29,7 +30,10 @@ Statement sql encoder decoder True where sql =- D.toByteString $- "FETCH FORWARD " <> D.asciiIntegral batchSize <> " FROM " <> D.byteString name+ D.toByteString+ $ "FETCH FORWARD "+ <> D.asciiIntegral batchSize+ <> " FROM "+ <> D.byteString name encoder = B.noParams
library/Hasql/CursorTransaction/Private/Transactions.hs view
@@ -1,13 +1,11 @@-module Hasql.CursorTransaction.Private.Transactions-where+module Hasql.CursorTransaction.Private.Transactions where import Hasql.CursorTransaction.Private.Prelude-import qualified Hasql.CursorTransaction.Private.Statements as A import qualified Hasql.CursorTransaction.Private.Specs as B-import qualified Hasql.Transaction as C+import qualified Hasql.CursorTransaction.Private.Statements as A import qualified Hasql.Decoders as E import qualified Hasql.Encoders as F-+import qualified Hasql.Transaction as C declareCursor :: ByteString -> ByteString -> F.Params params -> params -> C.Transaction () declareCursor cursorName template paramsEncoder params =
library/Hasql/CursorTransaction/Sessions.hs view
@@ -1,17 +1,16 @@ module Hasql.CursorTransaction.Sessions-(- cursorTransaction,-)+ ( cursorTransaction,+ ) where -import Hasql.CursorTransaction.Private.Prelude import qualified Hasql.CursorTransaction.Private.CursorTransaction as A-import qualified Hasql.Transaction.Sessions as D+import Hasql.CursorTransaction.Private.Prelude import qualified Hasql.Session as C+import qualified Hasql.Transaction.Sessions as D -- | -- Executes CursorTransaction in Session.--- +-- -- During the execution it establishes a Read transaction with the ReadCommitted isolation level. cursorTransaction :: (forall s. A.CursorTransaction s result) -> C.Session result cursorTransaction cursorTransaction =
library/Hasql/CursorTransaction/Transactions.hs view
@@ -1,11 +1,10 @@ module Hasql.CursorTransaction.Transactions-(- cursorTransaction,-)+ ( cursorTransaction,+ ) where -import qualified Hasql.CursorTransaction.Private.Transactions as A import qualified Hasql.CursorTransaction.Private.CursorTransaction as B+import qualified Hasql.CursorTransaction.Private.Transactions as A -- | -- Executes CursorTransaction in Transaction.