Skip to content

Commit 1d2784a

Browse files
committed
feat(codegen): ObjectTypeGenerator: skip field definitions with "kResolver" directive
1 parent 8787dd8 commit 1d2784a

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

graphql-kotlin-toolkit-codegen/src/main/kotlin/com/auritylab/graphql/kotlin/toolkit/codegen/generator/ObjectTypeGenerator.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.auritylab.graphql.kotlin.toolkit.codegen.generator
33
import com.auritylab.graphql.kotlin.toolkit.codegen.CodegenOptions
44
import com.auritylab.graphql.kotlin.toolkit.codegen.mapper.GeneratedMapper
55
import com.auritylab.graphql.kotlin.toolkit.codegen.mapper.KotlinTypeMapper
6+
import com.auritylab.graphql.kotlin.toolkit.common.directive.DirectiveFacade
67
import com.squareup.kotlinpoet.ClassName
78
import com.squareup.kotlinpoet.FileSpec
89
import com.squareup.kotlinpoet.FunSpec
@@ -42,10 +43,12 @@ internal class ObjectTypeGenerator(
4243
}
4344

4445
private fun buildProperties(fields: Collection<GraphQLFieldDefinition>): Collection<PropertySpec> {
45-
return fields.map {
46-
PropertySpec.builder(it.name, getKotlinType(it.type))
47-
.initializer(it.name)
48-
.build()
49-
}
46+
return fields
47+
.filter { !DirectiveFacade.resolver[it] }
48+
.map {
49+
PropertySpec.builder(it.name, getKotlinType(it.type))
50+
.initializer(it.name)
51+
.build()
52+
}
5053
}
5154
}

graphql-kotlin-toolkit-codegen/src/test/kotlin/com/auritylab/graphql/kotlin/toolkit/codegen/generator/ObjectTypeGeneratorTest.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.auritylab.graphql.kotlin.toolkit.codegen.generator
33
import com.auritylab.graphql.kotlin.toolkit.codegen._test.AbstractCompilationTest
44
import com.auritylab.graphql.kotlin.toolkit.codegen._test.TestObject
55
import graphql.Scalars
6+
import graphql.schema.GraphQLDirective
67
import graphql.schema.GraphQLFieldDefinition
78
import graphql.schema.GraphQLObjectType
89
import org.junit.jupiter.api.Assertions
@@ -36,6 +37,8 @@ internal class ObjectTypeGeneratorTest : AbstractCompilationTest() {
3637

3738
Assertions.assertEquals("name", memberProperties[0].name)
3839
Assertions.assertEquals("number", memberProperties[1].name)
40+
41+
// "hasResolver" MUST NOT be present as it's annotated with kResolver.
3942
}
4043
}
4144

@@ -50,4 +53,10 @@ val testObjectType = GraphQLObjectType.newObject()
5053
.name("number")
5154
.type(Scalars.GraphQLInt)
5255
)
56+
.field(
57+
GraphQLFieldDefinition.newFieldDefinition()
58+
.name("hasResolver")
59+
.type(Scalars.GraphQLInt)
60+
.withDirective(GraphQLDirective.newDirective().name("kResolver"))
61+
)
5362
.build()

0 commit comments

Comments
 (0)