Skip to content

Commit 527e0f3

Browse files
committed
refactor
1 parent 7707ab3 commit 527e0f3

File tree

6 files changed

+44
-33
lines changed

6 files changed

+44
-33
lines changed

src/definitions/interface.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@ export function buildInterfaceDefinition(
3131
const classMembers = node.fields
3232
?.map((fieldNode) => {
3333
const typeMetadata = buildTypeMetadata(fieldNode.type, schema, config);
34-
return buildFieldDefinition(
34+
return buildFieldDefinition({
3535
node,
3636
fieldNode,
3737
schema,
3838
config,
3939
typeMetadata,
40-
Boolean(fieldNode.arguments?.length),
41-
);
40+
shouldGenerateFunctions: Boolean(fieldNode.arguments?.length),
41+
});
4242
})
4343
.join("\n");
4444

src/definitions/object.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,15 @@ ${getDataClassMembers({ node, fieldNodes, schema, config, shouldGenerateFunction
103103
schema,
104104
config,
105105
);
106-
return buildFieldDefinition(
106+
return buildFieldDefinition({
107107
node,
108108
fieldNode,
109109
schema,
110110
config,
111111
typeMetadata,
112112
shouldGenerateFunctions,
113-
true,
114-
);
113+
isConstructorField: true,
114+
});
115115
})
116116
.join(",\n")}\n)`
117117
: "";
@@ -142,14 +142,14 @@ function getDataClassMembers({
142142
return (fieldNodes ?? node.fields)
143143
?.map((fieldNode) => {
144144
const typeMetadata = buildTypeMetadata(fieldNode.type, schema, config);
145-
return buildFieldDefinition(
145+
return buildFieldDefinition({
146146
node,
147147
fieldNode,
148148
schema,
149149
config,
150150
typeMetadata,
151151
shouldGenerateFunctions,
152-
);
152+
});
153153
})
154154
.join(`${shouldGenerateFunctions ? "" : ","}\n`);
155155
}

src/helpers/build-field-definition.ts

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,43 @@ import { indent } from "@graphql-codegen/visitor-plugin-common";
2525
import { buildAnnotations } from "./build-annotations";
2626
import { findTypeInResolverInterfacesConfig } from "./find-type-in-resolver-interfaces-config";
2727

28-
export function buildFieldDefinition(
29-
node: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode,
30-
fieldNode: FieldDefinitionNode,
31-
schema: GraphQLSchema,
32-
config: CodegenConfigWithDefaults,
33-
typeMetadata: TypeMetadata,
34-
shouldGenerateFunctions?: boolean,
35-
isConstructorField?: boolean,
36-
) {
28+
export function buildFieldDefinition({
29+
node,
30+
fieldNode,
31+
schema,
32+
config,
33+
typeMetadata,
34+
shouldGenerateFunctions,
35+
isConstructorField,
36+
}: {
37+
node: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode;
38+
fieldNode: FieldDefinitionNode;
39+
schema: GraphQLSchema;
40+
config: CodegenConfigWithDefaults;
41+
typeMetadata: TypeMetadata;
42+
shouldGenerateFunctions?: boolean;
43+
isConstructorField?: boolean;
44+
}) {
45+
const typeInResolverInterfacesConfig = findTypeInResolverInterfacesConfig(
46+
node,
47+
config,
48+
);
3749
const modifier = buildFieldModifier(
3850
node,
3951
fieldNode,
4052
schema,
41-
config,
53+
typeInResolverInterfacesConfig,
4254
isConstructorField,
4355
);
4456
const fieldArguments = isConstructorField
4557
? ""
46-
: buildFieldArguments(node, fieldNode, schema, config);
58+
: buildFieldArguments(
59+
node,
60+
fieldNode,
61+
schema,
62+
typeInResolverInterfacesConfig,
63+
config,
64+
);
4765
const fieldDefinition = `${modifier} ${fieldNode.name.value}${fieldArguments}`;
4866
const annotations = buildAnnotations({
4967
config,
@@ -62,10 +80,6 @@ export function buildFieldDefinition(
6280
const atLeastOneFieldHasNoArguments = node.fields?.some(
6381
(fieldNode) => !fieldNode.arguments?.length,
6482
);
65-
const typeInResolverInterfacesConfig = findTypeInResolverInterfacesConfig(
66-
node,
67-
config,
68-
);
6983
const defaultImplementation =
7084
!typeInResolverInterfacesConfig && atLeastOneFieldHasNoArguments
7185
? fieldNode.name.value
@@ -91,13 +105,11 @@ function buildFieldModifier(
91105
node: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode,
92106
fieldNode: FieldDefinitionNode,
93107
schema: GraphQLSchema,
94-
config: CodegenConfigWithDefaults,
108+
typeInResolverInterfacesConfig: ReturnType<
109+
typeof findTypeInResolverInterfacesConfig
110+
>,
95111
isConstructorField?: boolean,
96112
) {
97-
const typeInResolverInterfacesConfig = findTypeInResolverInterfacesConfig(
98-
node,
99-
config,
100-
);
101113
const shouldOverrideField = shouldModifyFieldWithOverride(
102114
node,
103115
fieldNode,
@@ -129,13 +141,12 @@ function buildFieldArguments(
129141
node: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode,
130142
fieldNode: FieldDefinitionNode,
131143
schema: GraphQLSchema,
144+
typeInResolverInterfacesConfig: ReturnType<
145+
typeof findTypeInResolverInterfacesConfig
146+
>,
132147
config: CodegenConfigWithDefaults,
133148
) {
134-
const typeIsInResolverInterfaces = findTypeInResolverInterfacesConfig(
135-
node,
136-
config,
137-
);
138-
if (!typeIsInResolverInterfaces && !fieldNode.arguments?.length) {
149+
if (!typeInResolverInterfacesConfig && !fieldNode.arguments?.length) {
139150
return "";
140151
}
141152
const isOverrideFunction = shouldModifyFieldWithOverride(

test/unit/should_handle_query_type_properly/codegen.config.ts renamed to test/unit/should_handle_top_level_types_properly/codegen.config.ts

File renamed without changes.

test/unit/should_handle_query_type_properly/expected.kt renamed to test/unit/should_handle_top_level_types_properly/expected.kt

File renamed without changes.

test/unit/should_handle_query_type_properly/schema.graphql renamed to test/unit/should_handle_top_level_types_properly/schema.graphql

File renamed without changes.

0 commit comments

Comments
 (0)