diff --git a/graphql_server/lib/graphql_server.dart b/graphql_server/lib/graphql_server.dart index e911cd3b..be693929 100644 --- a/graphql_server/lib/graphql_server.dart +++ b/graphql_server/lib/graphql_server.dart @@ -94,9 +94,8 @@ class GraphQL { return await executeQuery( document, operation, schema, coercedVariableValues, initialValue); else { - throw new UnimplementedError('mutations'); -// return executeMutation( -// document, operation, schema, coercedVariableValues, initialValue); + return executeMutation( + document, operation, schema, coercedVariableValues, initialValue); } } @@ -173,6 +172,23 @@ class GraphQL { document, selectionSet, queryType, initialValue, variableValues); } + Future> executeMutation( + DocumentContext document, + OperationDefinitionContext mutation, + GraphQLSchema schema, + Map variableValues, + initialValue) async { + var mutationType = schema.mutation; + + if (mutationType == null) { + throw new GraphQLException.fromMessage('The schema does not define a mutation type.'); + } + + var selectionSet = mutation.selectionSet; + return await executeSelectionSet( + document, selectionSet, mutationType, initialValue, variableValues); + } + Future> executeSelectionSet( DocumentContext document, SelectionSetContext selectionSet,