diff options
| author | Eugen Wissner <belka@caraus.de> | 2019-12-26 13:00:47 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2019-12-26 13:07:21 +0100 |
| commit | 56d88310df7c92a1721cc0dfa08a1d232c47c14b (patch) | |
| tree | 15604a675752a64e4a3be68e8848c7133e7ad5c8 /src/Language/GraphQL/Execute | |
| parent | e3a495a778e8ccec18e5d5c494ab3b0eed31b13c (diff) | |
| download | graphql-56d88310df7c92a1721cc0dfa08a1d232c47c14b.tar.gz | |
Add definition module
Diffstat (limited to 'src/Language/GraphQL/Execute')
| -rw-r--r-- | src/Language/GraphQL/Execute/Transform.hs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/Language/GraphQL/Execute/Transform.hs b/src/Language/GraphQL/Execute/Transform.hs index 8612381..28b9481 100644 --- a/src/Language/GraphQL/Execute/Transform.hs +++ b/src/Language/GraphQL/Execute/Transform.hs @@ -19,6 +19,7 @@ import qualified Data.List.NonEmpty as NonEmpty import Data.Sequence (Seq, (<|), (><)) import qualified Language.GraphQL.AST as Full import qualified Language.GraphQL.AST.Core as Core +import Language.GraphQL.AST.Document (Definition(..), Document) import qualified Language.GraphQL.Schema as Schema import qualified Language.GraphQL.Type.Directive as Directive @@ -35,18 +36,19 @@ liftJust = lift . lift . Just -- | Rewrites the original syntax tree into an intermediate representation used -- for query execution. -document :: Schema.Subs -> Full.Document -> Maybe Core.Document +document :: Schema.Subs -> Document -> Maybe Core.Document document subs document' = flip runReaderT subs $ evalStateT (collectFragments >> operations operationDefinitions) $ Replacement HashMap.empty fragmentTable where (fragmentTable, operationDefinitions) = foldr defragment mempty document' - defragment (Full.ExecutableDefinition (Full.DefinitionOperation definition)) acc = + defragment (ExecutableDefinition (Full.DefinitionOperation definition)) acc = (definition :) <$> acc - defragment (Full.ExecutableDefinition (Full.DefinitionFragment definition)) acc = + defragment (ExecutableDefinition (Full.DefinitionFragment definition)) acc = let (Full.FragmentDefinition name _ _ _) = definition in first (HashMap.insert name definition) acc + defragment _ acc = acc -- * Operation |
