diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Language/GraphQL/AST/Parser.hs | 10 | ||||
| -rw-r--r-- | src/Language/GraphQL/Schema.hs | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/Language/GraphQL/AST/Parser.hs b/src/Language/GraphQL/AST/Parser.hs index 274045d..41748b2 100644 --- a/src/Language/GraphQL/AST/Parser.hs +++ b/src/Language/GraphQL/AST/Parser.hs @@ -38,6 +38,7 @@ typeSystemDefinition = schemaDefinition typeDefinition :: Parser TypeDefinition typeDefinition = scalarTypeDefinition <|> objectTypeDefinition + <|> interfaceTypeDefinition <|> unionTypeDefinition <?> "TypeDefinition" @@ -83,6 +84,15 @@ unionMemberTypes sepBy' = UnionMemberTypes <*> name `sepBy'` pipe <?> "UnionMemberTypes" +interfaceTypeDefinition :: Parser TypeDefinition +interfaceTypeDefinition = InterfaceTypeDefinition + <$> description + <* symbol "interface" + <*> name + <*> opt directives + <*> braces (many fieldDefinition) + <?> "InterfaceTypeDefinition" + implementsInterfaces :: Foldable t => (Parser Text -> Parser Text -> Parser (t NamedType)) -> diff --git a/src/Language/GraphQL/Schema.hs b/src/Language/GraphQL/Schema.hs index 8bdf605..661e452 100644 --- a/src/Language/GraphQL/Schema.hs +++ b/src/Language/GraphQL/Schema.hs @@ -94,7 +94,7 @@ resolveFieldValue f resolveRight fld@(Field _ _ args _) = do _ <- addErrMsg err return $ HashMap.singleton (aliasOrName fld) Aeson.Null --- | Helper function to facilitate 'Argument' handling. +-- | Helper function to facilitate error handling and result emitting. withField :: (MonadIO m, Aeson.ToJSON a) => CollectErrsT m a -> Field -> CollectErrsT m (HashMap Text Aeson.Value) withField v fld |
