From 512d8f056f5a4092562aab2c18400b5a802045d0 Mon Sep 17 00:00:00 2001 From: MiniDigger | Martin Date: Tue, 31 Oct 2023 21:26:46 +0100 Subject: [PATCH] feat: respect aliases for fields --- .../papermc/hangar/components/query/QueryBuilder.java | 2 +- .../papermc/hangar/components/query/QueryConfig.java | 10 ++++++++-- .../papermc/hangar/components/query/QueryHelper.java | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/io/papermc/hangar/components/query/QueryBuilder.java b/backend/src/main/java/io/papermc/hangar/components/query/QueryBuilder.java index c82b1504b..93065bcd8 100644 --- a/backend/src/main/java/io/papermc/hangar/components/query/QueryBuilder.java +++ b/backend/src/main/java/io/papermc/hangar/components/query/QueryBuilder.java @@ -26,7 +26,7 @@ public class QueryBuilder { Map variables = new HashMap<>(); public static List getAllQueryBuilders(final GraphQLContext context) { - return context.get(QUERY_BUILDER); + return context.getOrDefault(QUERY_BUILDER, List.of()); } public static QueryBuilder getActiveQueryBuilder(final GraphQLContext context) { diff --git a/backend/src/main/java/io/papermc/hangar/components/query/QueryConfig.java b/backend/src/main/java/io/papermc/hangar/components/query/QueryConfig.java index 1a8a7d956..4f2f916bc 100644 --- a/backend/src/main/java/io/papermc/hangar/components/query/QueryConfig.java +++ b/backend/src/main/java/io/papermc/hangar/components/query/QueryConfig.java @@ -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 instrumentExecutionResult(final ExecutionResult executionResult, final InstrumentationExecutionParameters parameters, final InstrumentationState state) { final List 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 totalResult = new HashMap<>(); diff --git a/backend/src/main/java/io/papermc/hangar/components/query/QueryHelper.java b/backend/src/main/java/io/papermc/hangar/components/query/QueryHelper.java index 9ecf4a6c5..5618d5728 100644 --- a/backend/src/main/java/io/papermc/hangar/components/query/QueryHelper.java +++ b/backend/src/main/java/io/papermc/hangar/components/query/QueryHelper.java @@ -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; } }