packages feed

bolt-0.3.2.0: lib/Database/Bolt/Exception.hs

module Database.Bolt.Exception (
  internalErr,
  transportErr,
  protocolErr,
  authFail,
  reqFail,
  reqIgnore,
) where

import Control.Exception
import Data.Text (Text)
import Database.Bolt.Types

data BoltException
  = AuthenticationFailure Text
  | RequestFailure Object Text
  | RequestIgnored Object Text
  | InternalError Text
  | TransportError Text
  | ProtocolError Text
  deriving (Show)

instance Exception BoltException

authFail :: Text -> IO a
authFail = throwIO . AuthenticationFailure

reqFail :: Object -> Text -> IO a
reqFail meta = throwIO . RequestFailure meta

reqIgnore :: Object -> Text -> IO a
reqIgnore meta = throwIO . RequestIgnored meta

internalErr :: Text -> IO a
internalErr = throwIO . InternalError

transportErr :: Text -> IO a
transportErr = throwIO . TransportError

protocolErr :: Text -> IO a
protocolErr = throwIO . ProtocolError