Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Functions and datatypes for interpreting MSSQL database errors.
Synopsis
- data ErrorClass
- data ErrorSubclass a
- = NoSubclass
- | Subclass a
- data DataExceptionSubclass
- data SyntaxErrorOrAccessViolationSubclass
- parseErrorClass :: String -> Maybe ErrorClass
- defaultMSSQLTxErrorHandler :: MSSQLTxError -> QErr
- mutationMSSQLTxErrorHandler :: MSSQLTxError -> QErr
- mkMSSQLTxErrorHandler :: (ErrorClass -> Bool) -> MSSQLTxError -> QErr
Documentation
data ErrorClass Source #
The top-level error class. Errors in MSSQL are divided into different classes, which are further subdivided into individual error subclasses. It is useful to determine the class of database exception and handle it appropriately.
DataException (ErrorSubclass DataExceptionSubclass) | |
IntegrityConstraintViolation | |
SyntaxErrorOrAccessViolation (ErrorSubclass SyntaxErrorOrAccessViolationSubclass) |
Instances
Show ErrorClass Source # | |
Defined in Hasura.Backends.MSSQL.SQL.Error showsPrec :: Int -> ErrorClass -> ShowS # show :: ErrorClass -> String # showList :: [ErrorClass] -> ShowS # | |
Eq ErrorClass Source # | |
Defined in Hasura.Backends.MSSQL.SQL.Error (==) :: ErrorClass -> ErrorClass -> Bool # (/=) :: ErrorClass -> ErrorClass -> Bool # |
data ErrorSubclass a Source #
NoSubclass | represents non-specific |
Subclass a | represents known, more specific sub class |
Instances
Eq a => Eq (ErrorSubclass a) Source # | |
Defined in Hasura.Backends.MSSQL.SQL.Error (==) :: ErrorSubclass a -> ErrorSubclass a -> Bool # (/=) :: ErrorSubclass a -> ErrorSubclass a -> Bool # |
data DataExceptionSubclass Source #
StringDataRightTruncated | |
NumericValueOutOfRange | |
InvalidDatetimeFormat | |
DatetimeFieldOverflow | |
IntervalFieldOverflow | |
InvalidEscapeCharacter | |
InvalidEscapeSequence |
Instances
Show DataExceptionSubclass Source # | |
Defined in Hasura.Backends.MSSQL.SQL.Error showsPrec :: Int -> DataExceptionSubclass -> ShowS # show :: DataExceptionSubclass -> String # showList :: [DataExceptionSubclass] -> ShowS # | |
Eq DataExceptionSubclass Source # | |
Defined in Hasura.Backends.MSSQL.SQL.Error (==) :: DataExceptionSubclass -> DataExceptionSubclass -> Bool # (/=) :: DataExceptionSubclass -> DataExceptionSubclass -> Bool # |
data SyntaxErrorOrAccessViolationSubclass Source #
TableOrViewAlreadyExists | |
TableOrViewNotFound | |
IndexAlreadyExists | |
IndexNotFound | |
ColumnAlreadyExists | |
ColumnNotFound |
parseErrorClass :: String -> Maybe ErrorClass Source #
Parsing error class and subclass information from a SQLSTATE code. SQLSTATE provides detailed information about the cause of a warning or error. A SQLSTATE consists of 5 chars. They are divided into two parts: the first and second chars contain a class and the following three a subclass.
defaultMSSQLTxErrorHandler :: MSSQLTxError -> QErr Source #
A default transaction error handler where all errors are unexpected.
mutationMSSQLTxErrorHandler :: MSSQLTxError -> QErr Source #
A transaction error handler to be used in constructing mutation transactions, i.e INSERT, UPDATE and DELETE. We expect data exception and integrity constraint violation.
mkMSSQLTxErrorHandler :: (ErrorClass -> Bool) -> MSSQLTxError -> QErr Source #
Constructs a transaction error handler given a predicate that determines which error
classes (and subclasses) are expected and should be reported to the user. All other errors
are considered internal errors.
Example:-
Consider a insert mutation where we insert some data into columns of a table.
Except for the basic data type, such as Boolean, String, Float, Int etc.
we cannot invalidate data any further, such as validating timestamp string format.
In this case, a @DataException
is expected from the database and it is handled and
thrown with proper error message.