/// <summary> /// Generates a qualified <see cref="IGraphOperationRequest" /> with the given message /// wrapped as a graphql error allowing it to be processed /// by the client as a formatted, albeit errored, query response. When overridden in a child class this method /// allows the child to generate a custom <see cref="IGraphOperationResult" /> in response to the message. /// </summary> /// <param name="message">The error message to wrap.</param> /// <param name="errorCode">The error code to assign to the message.</param> /// <returns>IActionResult.</returns> protected virtual IGraphOperationResult ErrorMessageAsGraphQLResponse( string message, string errorCode = Constants.ErrorCodes.GENERAL_ERROR) { var response = new GraphOperationResult(this.GraphQLRequest); response.Messages.Add(GraphMessageSeverity.Critical, message, errorCode); return(response); }
/// <inheritdoc /> public async Task <IGraphOperationResult> ExecuteRequest( GraphQueryExecutionContext context, CancellationToken cancelToken = default) { Validation.ThrowIfNull(context, nameof(context)); // ******************************* // Primary query execution // ******************************* await _pipeline.InvokeAsync(context, cancelToken).ConfigureAwait(false); // ******************************* // Response Generation // ******************************* var queryResponse = context.Result; if (queryResponse == null) { queryResponse = new GraphOperationResult(context.Request); queryResponse.Messages.Add(GraphMessageSeverity.Critical, ERROR_NO_RESPONSE, Constants.ErrorCodes.GENERAL_ERROR); } return(queryResponse); }