hasql-transaction-0.5: library/Hasql/Transaction/Private/SQL.hs
module Hasql.Transaction.Private.SQL
where
import Hasql.Transaction.Private.Prelude
import Hasql.Transaction.Private.Model
import qualified ByteString.TreeBuilder as D
beginTransaction :: IsolationLevel -> Mode -> ByteString
beginTransaction isolation mode =
D.toByteString builder
where
builder =
"BEGIN " <> isolationBuilder <> " " <> modeBuilder
where
isolationBuilder =
case isolation of
ReadCommitted -> "ISOLATION LEVEL READ COMMITTED"
RepeatableRead -> "ISOLATION LEVEL REPEATABLE READ"
Serializable -> "ISOLATION LEVEL SERIALIZABLE"
modeBuilder =
case mode of
Write -> "READ WRITE"
Read -> "READ ONLY"
declareCursor :: ByteString -> ByteString -> ByteString
declareCursor name sql =
D.toByteString $
"DECLARE " <> D.byteString name <> " NO SCROLL CURSOR FOR " <> D.byteString sql