diff options
| author | Eugen Wissner <belka@caraus.de> | 2020-09-09 17:04:31 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2020-09-09 17:04:31 +0200 |
| commit | c2c57b636392ae67a118ce5be04ad8f4b1304ed5 (patch) | |
| tree | 317992e1bcca871e7b31dd8d131a67cba6d98152 /src/Language/GraphQL/Validate.hs | |
| parent | f6ff0ab9c785273e3ceeac6b9d636c5ec519a008 (diff) | |
| download | graphql-c2c57b636392ae67a118ce5be04ad8f4b1304ed5.tar.gz | |
Validate all fragments are used
Diffstat (limited to 'src/Language/GraphQL/Validate.hs')
| -rw-r--r-- | src/Language/GraphQL/Validate.hs | 12 |
1 files changed, 10 insertions, 2 deletions
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 |
