Skip to content

Commit 1ecffe9

Browse files
committed
fix resolver argument case
1 parent 5786a32 commit 1ecffe9

File tree

9 files changed

+42
-21
lines changed

9 files changed

+42
-21
lines changed

src/definitions/interface.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ export function buildInterfaceDefinition(
3636
config,
3737
definitionNode: fieldNode,
3838
});
39-
const fieldDefinition = buildFieldDefinition(fieldNode, node, config);
39+
const fieldDefinition = buildFieldDefinition(
40+
fieldNode,
41+
node,
42+
schema,
43+
config,
44+
);
4045
const fieldText = indent(
4146
`${fieldDefinition}: ${typeToUse.typeName}${
4247
typeToUse.isNullable ? "?" : ""

src/definitions/object.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ function getDataClassMembers({
8585

8686
return node.fields
8787
?.map((fieldNode) => {
88-
const typeToUse = buildTypeMetadata(fieldNode.type, schema, config);
88+
const typeMetadata = buildTypeMetadata(fieldNode.type, schema, config);
8989
const shouldOverrideField =
9090
!completableFuture &&
9191
node.interfaces?.some((i) => {
@@ -98,19 +98,20 @@ function getDataClassMembers({
9898
const fieldDefinition = buildFieldDefinition(
9999
fieldNode,
100100
node,
101+
schema,
101102
config,
102103
completableFuture,
103104
);
104-
const completableFutureDefinition = `java.util.concurrent.CompletableFuture<${typeToUse.typeName}${typeToUse.isNullable ? "?" : ""}>`;
105-
const defaultDefinition = `${typeToUse.typeName}${isExternalField(fieldNode) ? (typeToUse.isNullable ? "?" : "") : typeToUse.defaultValue}`;
105+
const completableFutureDefinition = `java.util.concurrent.CompletableFuture<${typeMetadata.typeName}${typeMetadata.isNullable ? "?" : ""}>`;
106+
const defaultDefinition = `${typeMetadata.typeName}${isExternalField(fieldNode) ? (typeMetadata.isNullable ? "?" : "") : typeMetadata.defaultValue}`;
106107
const field = indent(
107108
`${shouldOverrideField ? "override " : ""}${fieldDefinition}: ${completableFuture ? completableFutureDefinition : defaultDefinition}`,
108109
2,
109110
);
110111
const annotations = buildAnnotations({
111112
config,
112113
definitionNode: fieldNode,
113-
resolvedType: typeToUse,
114+
typeMetadata,
114115
});
115116
return `${annotations}${field}`;
116117
})

src/helpers/build-annotations.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,25 @@ export type DefinitionNode =
3232
export function buildAnnotations({
3333
config,
3434
definitionNode,
35-
resolvedType,
35+
typeMetadata,
3636
}: {
3737
config: CodegenConfigWithDefaults;
3838
definitionNode: DefinitionNode;
39-
resolvedType?: TypeMetadata;
39+
typeMetadata?: TypeMetadata;
4040
}) {
4141
const description = definitionNode?.description?.value ?? "";
4242
const descriptionAnnotation = buildDescriptionAnnotation(
4343
description,
4444
definitionNode,
4545
config,
46-
resolvedType,
46+
typeMetadata,
4747
);
4848
const directiveAnnotations = buildDirectiveAnnotations(
4949
definitionNode,
5050
config,
5151
);
52-
const unionAnnotation = resolvedType?.unionAnnotation
53-
? `@${resolvedType.unionAnnotation}\n`
52+
const unionAnnotation = typeMetadata?.unionAnnotation
53+
? `@${typeMetadata.unionAnnotation}\n`
5454
: "";
5555

5656
const annotations = [

src/helpers/build-description-annotation.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ export function buildDescriptionAnnotation(
88
description: string,
99
definitionNode: DefinitionNode,
1010
config: CodegenConfigWithDefaults,
11-
resolvedType?: TypeMetadata,
11+
typeMetadata?: TypeMetadata,
1212
) {
1313
const trimmedDescription = trimDescription(description);
1414
const isDeprecatedDescription = trimmedDescription.startsWith(
1515
deprecatedDescriptionPrefix,
1616
);
17-
if (isDeprecatedDescription && resolvedType?.unionAnnotation) {
17+
if (isDeprecatedDescription && typeMetadata?.unionAnnotation) {
1818
return `@GraphQLDescription("${trimmedDescription}")\n`;
1919
} else if (isDeprecatedDescription) {
2020
const descriptionValue = description.replace(
@@ -36,7 +36,7 @@ export function buildDescriptionAnnotation(
3636
: "";
3737
const trimmedDeprecatedReason = trimDescription(deprecatedReason);
3838

39-
if (deprecatedDirective && resolvedType?.unionAnnotation) {
39+
if (deprecatedDirective && typeMetadata?.unionAnnotation) {
4040
return `@GraphQLDescription("${trimmedDeprecatedReason}")\n`;
4141
} else if (deprecatedDirective) {
4242
const graphqlDescription = trimmedDescription

src/helpers/build-field-definition.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ See the License for the specific language governing permissions and
1111
limitations under the License.
1212
*/
1313

14-
import { buildListType } from "./build-type-metadata";
15-
import { getFieldTypeName } from "./dependent-type-utils";
14+
import { buildTypeMetadata } from "./build-type-metadata";
1615
import {
1716
FieldDefinitionNode,
17+
GraphQLSchema,
1818
InterfaceTypeDefinitionNode,
1919
Kind,
2020
ObjectTypeDefinitionNode,
@@ -26,6 +26,7 @@ import { CodegenConfigWithDefaults } from "./build-config-with-defaults";
2626
export function buildFieldDefinition(
2727
fieldNode: FieldDefinitionNode,
2828
definitionNode: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode,
29+
schema: GraphQLSchema,
2930
config: CodegenConfigWithDefaults,
3031
completableFuture?: boolean,
3132
) {
@@ -36,10 +37,10 @@ export function buildFieldDefinition(
3637
? "fun"
3738
: "suspend fun"
3839
: "val";
39-
const existingFieldArguments = fieldNode.arguments?.map(
40-
(arg) =>
41-
`${arg.name.value}: ${buildListType(arg.type, getFieldTypeName(arg.type))}${arg.type.kind === Kind.NON_NULL_TYPE ? "" : "?"}`,
42-
);
40+
const existingFieldArguments = fieldNode.arguments?.map((arg) => {
41+
const typeMetadata = buildTypeMetadata(arg.type, schema, config);
42+
return `${arg.name.value}: ${typeMetadata.typeName}${arg.type.kind === Kind.NON_NULL_TYPE ? "" : "?"}`;
43+
});
4344
const additionalFieldArguments = config.extraResolverArguments
4445
?.map(({ typeNames, argumentType, argumentName }) => {
4546
const shouldIncludeArg =

src/helpers/build-type-metadata.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ export function buildTypeMetadata(
9191
}
9292
}
9393

94-
export function buildListType(typeNode: TypeNode, typeName: string) {
94+
function buildListType(typeNode: TypeNode, typeName: string) {
9595
const isNullable = typeNode.kind !== Kind.NON_NULL_TYPE;
9696
const listTypeNullableWithNullableMember =
9797
typeNode.kind == Kind.LIST_TYPE &&

src/helpers/dependent-type-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export function getDependentFieldTypeNames(
3636
: [];
3737
}
3838

39-
export function getFieldTypeName(fieldType: TypeNode) {
39+
function getFieldTypeName(fieldType: TypeNode) {
4040
return getBaseTypeNode(fieldType).name.value;
4141
}
4242

test/unit/should_consolidate_input_and_output_types/expected.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,13 @@ data class MyTypeToConsolidateParent(
6767
data class MyTypeToConsolidateInputParent(
6868
val field: MyTypeToConsolidate? = null
6969
)
70+
71+
@GraphQLIgnore
72+
interface MyTypeToConsolidateParent2 {
73+
suspend fun field(input: MyTypeToConsolidate): String? = null
74+
}
75+
76+
@GraphQLIgnore
77+
interface MyTypeToConsolidateParent2CompletableFuture {
78+
fun field(input: MyTypeToConsolidate): java.util.concurrent.CompletableFuture<String?>
79+
}

test/unit/should_consolidate_input_and_output_types/schema.graphql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,7 @@ type MyTypeToConsolidateParent {
9494
input MyTypeToConsolidateInputParent {
9595
field: MyTypeToConsolidateInput
9696
}
97+
98+
type MyTypeToConsolidateParent2 {
99+
field(input: MyTypeToConsolidateInput!): String
100+
}

0 commit comments

Comments
 (0)