Skip to content

Commit adcd552

Browse files
Andy2003jexp
authored andcommitted
cleanup after review (#67)
1 parent 0ab80bb commit adcd552

File tree

5 files changed

+22
-23
lines changed

5 files changed

+22
-23
lines changed

src/main/kotlin/org/neo4j/graphql/BuildingEnv.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,26 +54,26 @@ class BuildingEnv(val types: MutableMap<String, GraphQLType>) {
5454
.build()
5555
} else {
5656
val existingRootType = (rootType as? GraphQLObjectType
57-
?: throw IllegalStateException("root type $rootTypeName is not an object type"))
57+
?: throw IllegalStateException("root type $rootTypeName is not an object type but ${rootType.javaClass}"))
5858
if (existingRootType.getFieldDefinition(fieldDefinition.name) != null) {
59-
return // definition already exists
59+
return // definition already exists, we don't override it
6060
}
6161
existingRootType
6262
.transform { builder -> builder.field(fieldDefinition) }
6363
}
6464
}
6565

66-
fun addFilterType(type: GraphQLFieldsContainer, handled: MutableSet<String> = mutableSetOf()): String {
66+
fun addFilterType(type: GraphQLFieldsContainer, createdTypes: MutableSet<String> = mutableSetOf()): String {
6767
val filterName = "_${type.name}Filter"
68-
if (handled.contains(filterName)) {
68+
if (createdTypes.contains(filterName)) {
6969
return filterName
7070
}
7171
val existingFilterType = types[filterName]
7272
if (existingFilterType != null) {
7373
return (existingFilterType as? GraphQLInputType)?.name
7474
?: throw IllegalStateException("Filter type $filterName is already defined but not an input type")
7575
}
76-
handled.add(filterName)
76+
createdTypes.add(filterName)
7777
val builder = GraphQLInputObjectType.newInputObject()
7878
.name(filterName)
7979
listOf("AND", "OR", "NOT").forEach {
@@ -89,7 +89,7 @@ class BuildingEnv(val types: MutableMap<String, GraphQLType>) {
8989
typeDefinition.isNeo4jType() -> getInputType(typeDefinition).name
9090
typeDefinition.isScalar() -> typeDefinition.innerName()
9191
typeDefinition is GraphQLEnumType -> typeDefinition.innerName()
92-
else -> addFilterType(getInnerFieldsContainer(typeDefinition), handled)
92+
else -> addFilterType(getInnerFieldsContainer(typeDefinition), createdTypes)
9393
}
9494

9595
Operators.forType(types[filterType] ?: typeDefinition).forEach { op ->
@@ -160,6 +160,7 @@ class BuildingEnv(val types: MutableMap<String, GraphQLType>) {
160160

161161
private fun getInputValueDefinitions(relevantFields: List<GraphQLFieldDefinition>): List<GraphQLInputObjectField> {
162162
return relevantFields.map {
163+
// just make evrything optional
163164
val type = (it.type as? GraphQLNonNull)?.wrappedType ?: it.type
164165
GraphQLInputObjectField
165166
.newInputObjectField()

src/main/kotlin/org/neo4j/graphql/GraphQLExtensions.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,3 +233,4 @@ fun paramName(variable: String, argName: String, value: Any?): String = when (va
233233

234234
fun GraphQLFieldDefinition.isID() = this.type.inner() == Scalars.GraphQLID
235235
fun GraphQLFieldDefinition.isNativeId() = this.name == ProjectionBase.NATIVE_ID
236+
fun GraphQLFieldsContainer.getIdField() = this.fieldDefinitions.find { it.isID() }

src/main/kotlin/org/neo4j/graphql/handler/DeleteHandler.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ class DeleteHandler private constructor(
1616
if (!canHandle(type)) {
1717
return
1818
}
19-
val idField = type.fieldDefinitions.find { it.isID() } ?: return
19+
val idField = type.getIdField() ?: return
2020

2121
val fieldDefinition = buildingEnv
2222
.buildFieldDefinition("delete", type, listOf(idField), nullableResult = true)
23-
.description("Deletes ${type.name} and returns its ID on successful deletion")
23+
.description("Deletes ${type.name} and returns the type itself")
2424
.type(type.ref() as GraphQLOutputType)
2525
.build()
2626
buildingEnv.addOperation(MUTATION, fieldDefinition)
@@ -38,7 +38,7 @@ class DeleteHandler private constructor(
3838
if (!canHandle(type)) {
3939
return null
4040
}
41-
val idField = type.fieldDefinitions.find { it.isID() } ?: return null
41+
val idField = type.getIdField() ?: return null
4242
return when {
4343
fieldDefinition.name == "delete${type.name}" -> DeleteHandler(type, idField, fieldDefinition)
4444
else -> null
@@ -50,10 +50,7 @@ class DeleteHandler private constructor(
5050
if (!schemaConfig.mutation.enabled || schemaConfig.mutation.exclude.contains(typeName)) {
5151
return false
5252
}
53-
if (type.fieldDefinitions.find { it.isID() } == null) {
54-
return false
55-
}
56-
return true
53+
return type.getIdField() != null
5754
}
5855
}
5956

src/main/kotlin/org/neo4j/graphql/handler/MergeOrUpdateHandler.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class MergeOrUpdateHandler private constructor(
4242
if (!canHandle(type)) {
4343
return null
4444
}
45-
val idField = type.fieldDefinitions.find { it.isID() } ?: return null
45+
val idField = type.getIdField() ?: return null
4646
return when {
4747
fieldDefinition.name == "merge${type.name}" -> MergeOrUpdateHandler(type, true, idField, fieldDefinition)
4848
fieldDefinition.name == "update${type.name}" -> MergeOrUpdateHandler(type, false, idField, fieldDefinition)
@@ -55,7 +55,7 @@ class MergeOrUpdateHandler private constructor(
5555
if (!schemaConfig.mutation.enabled || schemaConfig.mutation.exclude.contains(typeName)) {
5656
return false
5757
}
58-
if (type.fieldDefinitions.find { it.isID() } == null) {
58+
if (type.getIdField() == null) {
5959
return false
6060
}
6161
if (type.relevantFields().none { !it.isID() }) {

src/main/kotlin/org/neo4j/graphql/handler/relation/BaseRelationHandler.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ abstract class BaseRelationHandler(
2727
nullableResult: Boolean
2828
): GraphQLFieldDefinition.Builder? {
2929

30-
val targetType = targetField.type.getInnerFieldsContainer();
31-
val sourceIdField = source.fieldDefinitions.find { it.isID() }
32-
val targetIdField = targetType.fieldDefinitions.find { it.isID() }
30+
val targetType = targetField.type.getInnerFieldsContainer()
31+
val sourceIdField = source.getIdField()
32+
val targetIdField = targetType.getIdField()
3333
if (sourceIdField == null || targetIdField == null) {
3434
return null
3535
}
@@ -59,7 +59,7 @@ abstract class BaseRelationHandler(
5959
// TODO we do not mutate the node but the relation, I think this check should be different
6060
return false
6161
}
62-
if (type.fieldDefinitions.find { it.isID() } == null) {
62+
if (type.getIdField() == null) {
6363
return false
6464
}
6565
return true
@@ -70,7 +70,7 @@ abstract class BaseRelationHandler(
7070
if (targetField.getDirective(DirectiveConstants.RELATION) == null) {
7171
return false
7272
}
73-
if (type.fieldDefinitions.find { it.isID() } == null) {
73+
if (type.getIdField() == null) {
7474
return false
7575
}
7676
return true
@@ -103,9 +103,9 @@ abstract class BaseRelationHandler(
103103
}
104104
val relation = sourceType.relationshipFor(targetField.name) ?: return null
105105

106-
val targetType = targetField.type.getInnerFieldsContainer();
107-
val sourceIdField = sourceType.fieldDefinitions.find { it.isID() }
108-
val targetIdField = targetType.fieldDefinitions.find { it.isID() }
106+
val targetType = targetField.type.getInnerFieldsContainer()
107+
val sourceIdField = sourceType.getIdField()
108+
val targetIdField = targetType.getIdField()
109109
if (sourceIdField == null || targetIdField == null) {
110110
return null
111111
}

0 commit comments

Comments
 (0)