From c2c57b636392ae67a118ce5be04ad8f4b1304ed5 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Wed, 9 Sep 2020 17:04:31 +0200 Subject: Validate all fragments are used --- src/Language/GraphQL/Validate.hs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/Language/GraphQL/Validate.hs') diff --git a/src/Language/GraphQL/Validate.hs b/src/Language/GraphQL/Validate.hs index 1ffa514..7aafa64 100644 --- a/src/Language/GraphQL/Validate.hs +++ b/src/Language/GraphQL/Validate.hs @@ -85,8 +85,8 @@ selection :: forall m. Selection -> ValidateT m selection selection' | FragmentSpreadSelection fragmentSelection <- selection' = visitChildSelections ruleFilter $ fragmentSpread fragmentSelection - | Field _ _ _ _ selectionSet _ <- selection' = - visitChildSelections ruleFilter $ traverseSelectionSet selectionSet + | FieldSelection fieldSelection <- selection' = + visitChildSelections ruleFilter $ field fieldSelection | InlineFragmentSelection fragmentSelection <- selection' = visitChildSelections ruleFilter $ inlineFragment fragmentSelection where @@ -94,6 +94,14 @@ selection selection' mapReaderT (runRule accumulator) $ rule selection' ruleFilter accumulator _ = pure accumulator +field :: forall m. Field -> ValidateT m +field field'@(Field _ _ _ _ selections _) = + visitChildSelections ruleFilter $ traverseSelectionSet selections + where + ruleFilter accumulator (FieldRule rule) = + mapReaderT (runRule accumulator) $ rule field' + ruleFilter accumulator _ = pure accumulator + inlineFragment :: forall m. InlineFragment -> ValidateT m inlineFragment fragment@(InlineFragment _ _ selections _) = visitChildSelections ruleFilter $ traverseSelectionSet selections -- cgit v1.2.3