module Data.JsonSchema.Draft4.Failure where
import Prelude
import Data.List.NonEmpty (NonEmpty)
import Data.Text (Text)
import qualified Data.Validator.Draft4.Any as AN
import qualified Data.Validator.Draft4.Array as AR
import qualified Data.Validator.Draft4.Number as NU
import qualified Data.Validator.Draft4.Object as OB
import qualified Data.Validator.Failure as FR
type InvalidSchema = NonEmpty (Maybe Text, Failure)
type Invalid = NonEmpty Failure
type Failure = FR.Fail ValidatorChain
data ValidatorChain
= MultipleOf
| Maximum
| ExclusiveMaximum
| Minimum
| ExclusiveMinimum
| MaxLength
| MinLength
| PatternValidator
| MaxItems
| MinItems
| UniqueItems
| Items ValidatorChain
| AdditionalItemsBool
| AdditionalItemsObject ValidatorChain
| MaxProperties
| MinProperties
| Required
| SchemaDependency ValidatorChain
| PropertyDependency
| Properties ValidatorChain
| PatternProperties ValidatorChain
| AdditionalPropertiesBool
| AdditionalPropertiesObject ValidatorChain
| RefResolution
| RefLoop
| Ref ValidatorChain
| Enum
| TypeValidator
| AllOf ValidatorChain
| AnyOf
| OneOf
| NotValidator
deriving (Eq, Show)
maxE :: NU.MaximumInvalid -> ValidatorChain
maxE NU.Maximum = Maximum
maxE NU.ExclusiveMaximum = ExclusiveMaximum
minE :: NU.MinimumInvalid -> ValidatorChain
minE NU.Minimum = Minimum
minE NU.ExclusiveMinimum = ExclusiveMinimum
itemsE :: AR.ItemsInvalid ValidatorChain -> ValidatorChain
itemsE (AR.Items err) = Items err
itemsE AR.AdditionalItemsBoolInvalid = AdditionalItemsBool
itemsE (AR.AdditionalItemsObjectInvalid err) = AdditionalItemsObject err
depsE :: OB.DependencyInvalid ValidatorChain -> ValidatorChain
depsE (OB.SchemaDependencyInvalid err) = SchemaDependency err
depsE OB.PropertyDependencyInvalid = PropertyDependency
propE :: OB.PropertiesInvalid ValidatorChain -> ValidatorChain
propE (OB.PropertiesInvalid err) = Properties err
propE (OB.PropPatternInvalid err) = PatternProperties err
propE (OB.PropAdditionalInvalid a) =
case a of
OB.APBoolInvalid -> AdditionalPropertiesBool
OB.APObjectInvalid err -> AdditionalPropertiesObject err
patPropE :: OB.PatternPropertiesInvalid ValidatorChain -> ValidatorChain
patPropE (OB.PPInvalid err) = PatternProperties err
patPropE (OB.PPAdditionalPropertiesInvalid a) =
case a of
OB.APBoolInvalid -> AdditionalPropertiesBool
OB.APObjectInvalid err -> AdditionalPropertiesObject err
addPropE :: OB.AdditionalPropertiesInvalid ValidatorChain -> ValidatorChain
addPropE OB.APBoolInvalid = AdditionalPropertiesBool
addPropE (OB.APObjectInvalid err) = AdditionalItemsObject err
refE :: AN.RefInvalid ValidatorChain -> ValidatorChain
refE AN.RefResolution = RefResolution
refE AN.RefLoop = RefLoop
refE (AN.RefInvalid err) = Ref err