diff options
| author | Danny Navarro <j@dannynavarro.net> | 2016-02-17 12:59:35 +0100 |
|---|---|---|
| committer | Danny Navarro <j@dannynavarro.net> | 2016-02-17 13:20:56 +0100 |
| commit | 7131d1c142dc9c9fc5331ee3ebf90cf9154f85d9 (patch) | |
| tree | 219b3a71a0e0511267e006c3b4b1ae697dbd4d57 /Data/GraphQL | |
| parent | a0f12455c5b042d20773a39f9e85efbb880b65b1 (diff) | |
| download | graphql-7131d1c142dc9c9fc5331ee3ebf90cf9154f85d9.tar.gz | |
Initial support for aliases in `execute`
Diffstat (limited to 'Data/GraphQL')
| -rw-r--r-- | Data/GraphQL/Execute.hs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Data/GraphQL/Execute.hs b/Data/GraphQL/Execute.hs index 9d20e5c..1f921aa 100644 --- a/Data/GraphQL/Execute.hs +++ b/Data/GraphQL/Execute.hs @@ -11,6 +11,7 @@ import Data.Maybe (catMaybes) import qualified Data.Aeson as Aeson import qualified Data.HashMap.Strict as HashMap +import qualified Data.Text as T import Data.GraphQL.AST import Data.GraphQL.Schema (Resolver, Schema(..)) @@ -28,8 +29,10 @@ selectionSet :: Alternative f => Schema.Subs -> Resolver f -> SelectionSet -> f selectionSet f resolv = fmap (Aeson.Object . fold) . traverse (selection f resolv) selection :: Alternative f => Schema.Subs -> Resolver f -> Selection -> f Aeson.Object -selection f resolv (SelectionField field@(Field _ name _ _ _)) = - fmap (HashMap.singleton name) $ Aeson.toJSON <$> resolv (fieldToInput f field) +selection f resolv (SelectionField field@(Field alias name _ _ _)) = + fmap (HashMap.singleton aliasOrName) $ Aeson.toJSON <$> resolv (fieldToInput f field) + where + aliasOrName = if T.null alias then name else alias selection _ _ _ = empty -- * AST/Schema conversions |
