module Orville.PostgreSQL.ErrorDetailLevel
( ErrorDetailLevel (ErrorDetailLevel, includeErrorMessage, includeSchemaNames, includeRowIdentifierValues, includeNonIdentifierValues)
, defaultErrorDetailLevel
, minimalErrorDetailLevel
, maximalErrorDetailLevel
, redactErrorMessage
, redactSchemaName
, redactIdentifierValue
, redactNonIdentifierValue
)
where
data ErrorDetailLevel = ErrorDetailLevel
{ ErrorDetailLevel -> Bool
includeErrorMessage :: Bool
, ErrorDetailLevel -> Bool
includeSchemaNames :: Bool
, ErrorDetailLevel -> Bool
includeRowIdentifierValues :: Bool
, ErrorDetailLevel -> Bool
includeNonIdentifierValues :: Bool
}
deriving
(
Int -> ErrorDetailLevel -> ShowS
[ErrorDetailLevel] -> ShowS
ErrorDetailLevel -> String
(Int -> ErrorDetailLevel -> ShowS)
-> (ErrorDetailLevel -> String)
-> ([ErrorDetailLevel] -> ShowS)
-> Show ErrorDetailLevel
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ErrorDetailLevel -> ShowS
showsPrec :: Int -> ErrorDetailLevel -> ShowS
$cshow :: ErrorDetailLevel -> String
show :: ErrorDetailLevel -> String
$cshowList :: [ErrorDetailLevel] -> ShowS
showList :: [ErrorDetailLevel] -> ShowS
Show
)
minimalErrorDetailLevel :: ErrorDetailLevel
minimalErrorDetailLevel :: ErrorDetailLevel
minimalErrorDetailLevel =
ErrorDetailLevel
{ includeErrorMessage :: Bool
includeErrorMessage = Bool
False
, includeSchemaNames :: Bool
includeSchemaNames = Bool
False
, includeRowIdentifierValues :: Bool
includeRowIdentifierValues = Bool
False
, includeNonIdentifierValues :: Bool
includeNonIdentifierValues = Bool
False
}
defaultErrorDetailLevel :: ErrorDetailLevel
defaultErrorDetailLevel :: ErrorDetailLevel
defaultErrorDetailLevel =
ErrorDetailLevel
{ includeErrorMessage :: Bool
includeErrorMessage = Bool
True
, includeSchemaNames :: Bool
includeSchemaNames = Bool
True
, includeRowIdentifierValues :: Bool
includeRowIdentifierValues = Bool
True
, includeNonIdentifierValues :: Bool
includeNonIdentifierValues = Bool
False
}
maximalErrorDetailLevel :: ErrorDetailLevel
maximalErrorDetailLevel :: ErrorDetailLevel
maximalErrorDetailLevel =
ErrorDetailLevel
{ includeErrorMessage :: Bool
includeErrorMessage = Bool
True
, includeSchemaNames :: Bool
includeSchemaNames = Bool
True
, includeRowIdentifierValues :: Bool
includeRowIdentifierValues = Bool
True
, includeNonIdentifierValues :: Bool
includeNonIdentifierValues = Bool
True
}
redactErrorMessage :: ErrorDetailLevel -> String -> String
redactErrorMessage :: ErrorDetailLevel -> ShowS
redactErrorMessage ErrorDetailLevel
detailLevel String
message =
if ErrorDetailLevel -> Bool
includeErrorMessage ErrorDetailLevel
detailLevel
then String
message
else String
redactedValue
redactSchemaName :: ErrorDetailLevel -> String -> String
redactSchemaName :: ErrorDetailLevel -> ShowS
redactSchemaName ErrorDetailLevel
detailLevel String
schemaName =
if ErrorDetailLevel -> Bool
includeSchemaNames ErrorDetailLevel
detailLevel
then String
schemaName
else String
redactedValue
redactIdentifierValue :: ErrorDetailLevel -> String -> String
redactIdentifierValue :: ErrorDetailLevel -> ShowS
redactIdentifierValue ErrorDetailLevel
detailLevel String
idValue =
if ErrorDetailLevel -> Bool
includeRowIdentifierValues ErrorDetailLevel
detailLevel
then String
idValue
else String
redactedValue
redactNonIdentifierValue :: ErrorDetailLevel -> String -> String
redactNonIdentifierValue :: ErrorDetailLevel -> ShowS
redactNonIdentifierValue ErrorDetailLevel
detailLevel String
nonIdValue =
if ErrorDetailLevel -> Bool
includeNonIdentifierValues ErrorDetailLevel
detailLevel
then String
nonIdValue
else String
redactedValue
redactedValue :: String
redactedValue :: String
redactedValue =
String
"[REDACTED]"