feat: respect aliases for fields

This commit is contained in:
MiniDigger | Martin 2023-10-31 21:26:46 +01:00
parent 9cd604e99e
commit 512d8f056f
3 changed files with 10 additions and 4 deletions

View File

@ -26,7 +26,7 @@ public class QueryBuilder {
Map<String, Object> variables = new HashMap<>();
public static List<QueryBuilder> getAllQueryBuilders(final GraphQLContext context) {
return context.get(QUERY_BUILDER);
return context.getOrDefault(QUERY_BUILDER, List.of());
}
public static QueryBuilder getActiveQueryBuilder(final GraphQLContext context) {

View File

@ -68,7 +68,7 @@ public class QueryConfig {
final QueryBuilder queryBuilder = getActiveQueryBuilder(parameters.getEnvironment().getGraphQlContext());
final String parentAlias = PrefixUtil.getParentAlias(parameters.getEnvironment().getExecutionStepInfo(), queryBuilder);
final String parentTable = PrefixUtil.getParentTable(parameters.getEnvironment().getExecutionStepInfo(), queryBuilder);
queryBuilder.fields.add(STR."\{parentTable}\{propertyDataFetcher.getPropertyName()} AS \{parentAlias}\{propertyDataFetcher.getPropertyName()}");
queryBuilder.fields.add(STR."\{parentTable}\{propertyDataFetcher.getPropertyName()} AS \{parentAlias}\{parameters.getExecutionStepInfo().getPath().getSegmentName()}");
// find return type
if (parameters.getField().getType() instanceof final GraphQLScalarType scalarType) {
@ -85,8 +85,14 @@ public class QueryConfig {
public @NotNull CompletableFuture<ExecutionResult> instrumentExecutionResult(final ExecutionResult executionResult, final InstrumentationExecutionParameters parameters, final InstrumentationState state) {
final List<QueryBuilder> queryBuilders = getAllQueryBuilders(parameters.getGraphQLContext());
// (parsing) error? -> return
if (!executionResult.getErrors().isEmpty()) {
return CompletableFuture.completedFuture(executionResult);
}
// introspection query? -> return
if (parameters.getOperation() != null && parameters.getOperation().equals("IntrospectionQuery")) {
return Instrumentation.super.instrumentExecutionResult(executionResult, parameters, state);
return CompletableFuture.completedFuture(executionResult);
}
final Map<String, Object> totalResult = new HashMap<>();

View File

@ -54,7 +54,7 @@ public final class QueryHelper {
queryBuilder.fields.add(STR."\{parentTable}\{idField} AS \{id}");
queryBuilder.joins.add(STR."JOIN avatars \{parentAlias}avatar ON \{parentAlias}avatar.type = '\{avatarType}' AND \{parentAlias}avatar.subject = \{parentTable}\{idField}::varchar");
queryBuilder.resolver.put(parentAlias + "avatarUrl", (r) -> fileService.getAvatarUrl(avatarType, String.valueOf(r.get(id)), r.get(avatarVersion)));
queryBuilder.resolver.put(parentAlias + environment.getExecutionStepInfo().getPath().getSegmentName(), (r) -> fileService.getAvatarUrl(avatarType, String.valueOf(r.get(id)), r.get(avatarVersion)));
return EMPTY;
}
}