From 6e644c5b4b3a8284ed0a1f0a84fef775f70a68d6 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Wed, 16 Sep 2020 09:12:49 +0200 Subject: Move path to the execution error Since it isn't possible to get a path during validation, without executing the query. --- src/Language/GraphQL/Validate/Rules.hs | 11 ----------- src/Language/GraphQL/Validate/Validation.hs | 12 ------------ 2 files changed, 23 deletions(-) (limited to 'src/Language/GraphQL/Validate') diff --git a/src/Language/GraphQL/Validate/Rules.hs b/src/Language/GraphQL/Validate/Rules.hs index 0e1ccfa..2d9cf74 100644 --- a/src/Language/GraphQL/Validate/Rules.hs +++ b/src/Language/GraphQL/Validate/Rules.hs @@ -70,7 +70,6 @@ executableDefinitionsRule = DefinitionRule $ \case { message = "Definition must be OperationDefinition or FragmentDefinition." , locations = [location] - , path = [] } -- | Subscription operations must have exactly one root field. @@ -88,12 +87,10 @@ singleFieldSubscriptionsRule = OperationDefinitionRule $ \case , "must select only one top level field." ] , locations = [location] - , path = [] } | otherwise -> pure $ Error { message = errorMessage , locations = [location] - , path = [] } _ -> lift mempty where @@ -173,7 +170,6 @@ loneAnonymousOperationRule = OperationDefinitionRule $ \case { message = "This anonymous operation must be the only defined operation." , locations = [location] - , path = [] } -- | Each named operation definition must be unique within a document when @@ -209,7 +205,6 @@ findDuplicates filterByName thisLocation errorMessage = do error' locations' = Error { message = errorMessage , locations = locations' - , path = [] } viewOperation :: Definition -> Maybe OperationDefinition @@ -257,7 +252,6 @@ fragmentSpreadTargetDefinedRule = FragmentSpreadRule $ \case Nothing -> pure $ Error { message = error' fragmentName , locations = [location] - , path = [] } Just _ -> lift mempty where @@ -288,7 +282,6 @@ fragmentSpreadTypeExistenceRule = SelectionRule $ \case Nothing -> pure $ Error { message = spreadError fragmentName typeCondition , locations = [location] - , path = [] } Just _ -> lift mempty InlineFragmentSelection fragmentSelection @@ -299,7 +292,6 @@ fragmentSpreadTypeExistenceRule = SelectionRule $ \case Nothing -> pure $ Error { message = inlineError typeCondition , locations = [location] - , path = [] } Just _ -> lift mempty _ -> lift mempty @@ -344,7 +336,6 @@ fragmentsOnCompositeTypesRule = FragmentRule definitionRule inlineRule Nothing -> pure $ Error { message = errorMessage typeCondition , locations = [location] - , path = [] } Just _ -> lift mempty errorMessage typeCondition = concat @@ -363,7 +354,6 @@ noUnusedFragmentsRule = FragmentDefinitionRule $ \fragment -> | otherwise = pure $ Error { message = errorMessage fragName , locations = [location] - , path = [] } errorMessage fragName = concat [ "Fragment \"" @@ -413,7 +403,6 @@ noFragmentCyclesRule = FragmentDefinitionRule $ \case , ")." ] , locations = [location] - , path = [] } _ -> lift mempty where diff --git a/src/Language/GraphQL/Validate/Validation.hs b/src/Language/GraphQL/Validate/Validation.hs index 4432478..0cc39f7 100644 --- a/src/Language/GraphQL/Validate/Validation.hs +++ b/src/Language/GraphQL/Validate/Validation.hs @@ -5,7 +5,6 @@ -- | Definitions used by the validation rules and the validator itself. module Language.GraphQL.Validate.Validation ( Error(..) - , Path(..) , Rule(..) , RuleT , Validation(..) @@ -14,25 +13,14 @@ module Language.GraphQL.Validate.Validation import Control.Monad.Trans.Reader (ReaderT) import Data.HashMap.Strict (HashMap) import Data.Sequence (Seq) -import Data.Text (Text) import Language.GraphQL.AST.Document import Language.GraphQL.Type.Schema (Schema) import qualified Language.GraphQL.Type.Schema as Schema --- | If an error can be associated to a particular field in the GraphQL result, --- it must contain an entry with the key path that details the path of the --- response field which experienced the error. This allows clients to identify --- whether a null result is intentional or caused by a runtime error. -data Path - = Segment Text -- ^ Field name. - | Index Int -- ^ List index if a field returned a list. - deriving (Eq, Show) - -- | Validation error. data Error = Error { message :: String , locations :: [Location] - , path :: [Path] } deriving (Eq, Show) -- | Validation rule context. -- cgit v1.2.3