Skip to content
This repository has been archived by the owner on Oct 25, 2021. It is now read-only.

Add support for DataLoaderRegistry in DefaultGraphQLInvocation #12

Merged
merged 1 commit into from
Jun 24, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import graphql.spring.web.reactive.ExecutionInputCustomizer;
import graphql.spring.web.reactive.GraphQLInvocation;
import graphql.spring.web.reactive.GraphQLInvocationData;
import org.dataloader.DataLoaderRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
Expand All @@ -19,16 +20,22 @@ public class DefaultGraphQLInvocation implements GraphQLInvocation {
@Autowired
GraphQL graphQL;

@Autowired(required = false)
DataLoaderRegistry dataLoaderRegistry;

@Autowired
ExecutionInputCustomizer executionInputCustomizer;

@Override
public Mono<ExecutionResult> invoke(GraphQLInvocationData invocationData, ServerWebExchange serverWebExchange) {
ExecutionInput executionInput = ExecutionInput.newExecutionInput()
ExecutionInput.Builder executionInputBuilder = ExecutionInput.newExecutionInput()
.query(invocationData.getQuery())
.operationName(invocationData.getOperationName())
.variables(invocationData.getVariables())
.build();
.variables(invocationData.getVariables());
if (dataLoaderRegistry != null) {
executionInputBuilder.dataLoaderRegistry(dataLoaderRegistry);
}
ExecutionInput executionInput = executionInputBuilder.build();
Mono<ExecutionInput> customizedExecutionInputMono = executionInputCustomizer.customizeExecutionInput(executionInput, serverWebExchange);
return customizedExecutionInputMono.flatMap(customizedExecutionInput -> Mono.fromCompletionStage(graphQL.executeAsync(customizedExecutionInput)));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import graphql.spring.web.servlet.ExecutionInputCustomizer;
import graphql.spring.web.servlet.GraphQLInvocation;
import graphql.spring.web.servlet.GraphQLInvocationData;
import org.dataloader.DataLoaderRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.WebRequest;
Expand All @@ -20,16 +21,22 @@ public class DefaultGraphQLInvocation implements GraphQLInvocation {
@Autowired
GraphQL graphQL;

@Autowired(required = false)
DataLoaderRegistry dataLoaderRegistry;

@Autowired
ExecutionInputCustomizer executionInputCustomizer;

@Override
public CompletableFuture<ExecutionResult> invoke(GraphQLInvocationData invocationData, WebRequest webRequest) {
ExecutionInput executionInput = ExecutionInput.newExecutionInput()
ExecutionInput.Builder executionInputBuilder = ExecutionInput.newExecutionInput()
.query(invocationData.getQuery())
.operationName(invocationData.getOperationName())
.variables(invocationData.getVariables())
.build();
.variables(invocationData.getVariables());
if (dataLoaderRegistry != null) {
executionInputBuilder.dataLoaderRegistry(dataLoaderRegistry);
}
ExecutionInput executionInput = executionInputBuilder.build();
CompletableFuture<ExecutionInput> customizedExecutionInput = executionInputCustomizer.customizeExecutionInput(executionInput, webRequest);
return customizedExecutionInput.thenCompose(graphQL::executeAsync);
}
Expand Down