mirror of
https://github.com/HangarMC/Hangar.git
synced 2025-02-23 15:12:52 +08:00
feat: respect aliases for fields
This commit is contained in:
parent
9cd604e99e
commit
512d8f056f
@ -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) {
|
||||
|
@ -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<>();
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user