module Hasql.Transaction.Private.SQL where import ByteString.TreeBuilder qualified as D import Hasql.Transaction.Config import Hasql.Transaction.Private.Prelude beginTransaction :: IsolationLevel -> Mode -> ByteString beginTransaction :: IsolationLevel -> Mode -> ByteString beginTransaction IsolationLevel isolation Mode mode = Builder -> ByteString D.toByteString Builder builder where builder :: Builder builder = Builder "BEGIN " Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder isolationBuilder Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder " " Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder modeBuilder where isolationBuilder :: Builder isolationBuilder = case IsolationLevel isolation of IsolationLevel ReadCommitted -> Builder "ISOLATION LEVEL READ COMMITTED" IsolationLevel RepeatableRead -> Builder "ISOLATION LEVEL REPEATABLE READ" IsolationLevel Serializable -> Builder "ISOLATION LEVEL SERIALIZABLE" modeBuilder :: Builder modeBuilder = case Mode mode of Mode Write -> Builder "READ WRITE" Mode Read -> Builder "READ ONLY"