summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Language/GraphQL/AST/Transform.hs16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/Language/GraphQL/AST/Transform.hs b/src/Language/GraphQL/AST/Transform.hs
index 93fb557..d70a163 100644
--- a/src/Language/GraphQL/AST/Transform.hs
+++ b/src/Language/GraphQL/AST/Transform.hs
@@ -94,17 +94,21 @@ collectFragments = do
_ <- fragmentDefinition nextValue
collectFragments
-fragmentDefinition :: Full.FragmentDefinition -> TransformT (NonEmpty Core.Selection)
+fragmentDefinition ::
+ Full.FragmentDefinition ->
+ TransformT (NonEmpty Core.Selection)
fragmentDefinition (Full.FragmentDefinition name _tc _dirs sels) = do
+ modify deleteFragmentDefinition
selections <- traverse selection sels
let newValue = either id pure =<< selections
- modify $ moveFragment newValue
+ modify $ insertFragment newValue
liftJust newValue
where
- moveFragment newValue (Replacement fullFragments emptyFragDefs) =
- let newFragments = HashMap.insert name newValue fullFragments
- newDefinitions = HashMap.delete name emptyFragDefs
- in Replacement newFragments newDefinitions
+ deleteFragmentDefinition (Replacement fragments' fragmentDefinitions') =
+ Replacement fragments' $ HashMap.delete name fragmentDefinitions'
+ insertFragment newValue (Replacement fragments' fragmentDefinitions') =
+ let newFragments = HashMap.insert name newValue fragments'
+ in Replacement newFragments fragmentDefinitions'
field :: Full.Field -> TransformT Core.Field
field (Full.Field a n args _dirs sels) = do