diff options
| author | Eugen Wissner <belka@caraus.de> | 2019-12-01 20:43:19 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2019-12-02 07:43:19 +0100 |
| commit | fc9ad9c4a1e2e79a6b93d2599ca8fa6770caf631 (patch) | |
| tree | 344aa5eeddaf2429c8919e42fdd48ef4840adefc /src/Language/GraphQL/Schema.hs | |
| parent | def52ddc202dc43f75ce5aebee3e448b263bde12 (diff) | |
| download | graphql-fc9ad9c4a1e2e79a6b93d2599ca8fa6770caf631.tar.gz | |
Consider __typename when evaluating fragments
Fixes #30.
Diffstat (limited to 'src/Language/GraphQL/Schema.hs')
| -rw-r--r-- | src/Language/GraphQL/Schema.hs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/Language/GraphQL/Schema.hs b/src/Language/GraphQL/Schema.hs index afe068f..fa8bf78 100644 --- a/src/Language/GraphQL/Schema.hs +++ b/src/Language/GraphQL/Schema.hs @@ -131,8 +131,8 @@ resolve resolvers = fmap (Aeson.toJSON . fold) . traverse tryResolvers tryResolvers (SelectionField fld@(Field _ name _ _)) = maybe (errmsg fld) (tryResolver fld) $ find (compareResolvers name) resolvers tryResolvers (SelectionFragment (Fragment typeCondition selections')) = do - that <- maybe (return "") resolveTypeName (find (compareResolvers "__typename") resolvers) - if Aeson.String typeCondition == that + that <- traverse resolveTypeName (find (compareResolvers "__typename") resolvers) + if maybe True (Aeson.String typeCondition ==) that then fmap fold . traverse tryResolvers $ selections' else return mempty compareResolvers name (Resolver name' _) = name == name' |
