{-# LANGUAGE OverloadedStrings #-}
module Hasql.Private.Types where
-- bytestring-tree-builder
import ByteString.TreeBuilder (Builder)
-- | A PostgreSQL transaction isolation level
data IsolationLevel
= ReadCommitted
| RepeatableRead
| Serializable
deriving (Show, Eq)
isolationLevelToSQL :: IsolationLevel -> Builder
isolationLevelToSQL = \case
ReadCommitted -> "READ COMMITTED"
RepeatableRead -> "REPEATABLE READ"
Serializable -> "SERIALIZABLE"
-- | A PostgreSQL transaction mode
data Mode = ReadWrite | ReadOnly
deriving (Show, Eq)
modeToSQL :: Mode -> Builder
modeToSQL = \case
ReadWrite -> "READ WRITE"
ReadOnly -> "READ ONLY"
-- | A PostgreSQL transaction deferrability designation
data Deferrable = Deferrable | NotDeferrable
deriving (Show, Eq)
deferrableToSQL :: Deferrable -> Builder
deferrableToSQL = \case
Deferrable -> "DEFERRABLE"
NotDeferrable -> "NOT DEFERRABLE"