packages feed

hasql-transaction 0.9.1 → 0.10

raw patch · 3 files changed

+6/−26 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Hasql.Transaction: instance GHC.Base.Alternative Hasql.Transaction.Transaction
+ Hasql.Transaction: instance Data.Functor.Alt.Alt Hasql.Transaction.Transaction

Files

hasql-transaction.cabal view
@@ -1,5 +1,5 @@ name: hasql-transaction-version: 0.9.1+version: 0.10 category: Hasql, Database, PostgreSQL synopsis: Composable abstraction over retryable transactions for Hasql homepage: https://github.com/nikita-volkov/hasql-transaction
library/Hasql/Transaction.hs view
@@ -78,9 +78,8 @@   select (Transaction mode1 level1 list1) (Transaction mode2 level2 list2) =     Transaction (max mode1 mode2) (max level1 level2) (select <$> list1 <*> list2) -instance Alternative Transaction where-  empty = Transaction minBound minBound []-  (<|>) (Transaction mode1 level1 list1) (Transaction mode2 level2 list2) =+instance Alt Transaction where+  (<!>) (Transaction mode1 level1 list1) (Transaction mode2 level2 list2) =     Transaction (max mode1 mode2) (max level1 level2) (list1 <> list2)  {-|
library/Hasql/Transaction/Sessions.hs view
@@ -14,34 +14,15 @@ import qualified Hasql.Transaction.Statements as Statements  -inRetryingTransaction :: Mode -> Level -> Session (a, Condemnation) -> Session a-inRetryingTransaction mode isolation session =-  fix $ \ recur -> catchError normal (onError recur)-  where-    normal =-      do-        statement () (Statements.beginTransaction mode isolation)-        (result, condemnation) <- session-        case condemnation of-          Uncondemned -> statement () Statements.commitTransaction-          Condemned -> statement () Statements.abortTransaction-        return result-    onError continue error =-      do-        statement () Statements.abortTransaction-        case error of-          QueryError _ _ (ResultError (ServerError "40001" _ _ _)) -> continue-          _ -> throwError error- inAlternatingTransaction :: Mode -> Level -> [Session (a, Condemnation)] -> Session a-inAlternatingTransaction mode level sessions =+inAlternatingTransaction mode level =   let     loop = \ case       session : sessionsTail -> tryTransaction mode level session >>= \ case         Just a -> return a         Nothing -> loop sessionsTail-      _ -> loop sessions-    in loop sessions+      _ -> error "Attempt to run no alternatives"+    in loop  tryTransaction :: Mode -> Level -> Session (a, Condemnation) -> Session (Maybe a) tryTransaction mode level session = do