Skip to content

Commit 9d37255

Browse files
committed
refactor!: remove DataLoaderPreparedRequestExecutor
Adds proper handling for `dataProperties` to `ParallelRequestExecutor` and gets rid of `DataLoaderPreparedRequestExecutor`, along with the option to configure the request executor in `SchemaConfiguration`. This also consolidates some tests that were hardcoded to use one of the request executors, and therefore missed the other. Resolves #58 Resolves #268 BREAKING CHANGE: The option to configure request executors has been removed, and execution will now always use the `ParallelRequestExecutor`.
1 parent 3a71dba commit 9d37255

File tree

26 files changed

+47
-753
lines changed

26 files changed

+47
-753
lines changed

docs/content/Reference/Type System/objects-and-interfaces.md

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -173,23 +173,12 @@ people in the second query. That's what the `dataProperty` will solve for you.
173173

174174
### Setting up
175175

176-
Using DataLoaders requires the `DataLoaderPrepared` executor:
177-
178-
```kotlin
179-
configure {
180-
executor = Executor.DataLoaderPrepared
181-
}
182-
```
183-
184176
*Example*
185177

186178
```kotlin
187179
data class Person(val id: Int, val name: String)
188180
val people = (1..5).map { Person(it, "Name-$it") }
189181
...
190-
configure {
191-
executor = Executor.DataLoaderPrepared
192-
}
193182
query("people") {
194183
resolver { -> people }
195184
}
@@ -257,13 +246,3 @@ Returns:
257246
}
258247
}
259248
```
260-
261-
### Current known issues
262-
263-
This feature can be used in production but does currently have some issues:
264-
265-
1. The `useDefaultPrettyPrint` doesn't work
266-
1. Order of fields are not guaranteed to match the order that was requested
267-
1. Custom generic type resolvers are not supported
268-
1. Schema stitching is not supported
269-
1. Other than that it should work as expected

docs/content/Reference/configuration.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ KGraphQL schema allows configuration of the following properties:
88
| objectMapper | Schema is using Jackson ObjectMapper from this property | result of `jacksonObjectMapper()` from [jackson-kotlin-module](https://github.com/FasterXML/jackson-module-kotlin) |
99
| acceptSingleValueAsArray | Schema accepts single argument values as singleton list | `true` |
1010
| coroutineDispatcher | Schema is using CoroutineDispatcher from this property | [CommonPool](https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/CommonPool.kt) |
11-
| executor | | [Executor.Parallel](https://github.com/aPureBase/KGraphQL/blob/master/kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/execution/Executor.kt) |
1211
| genericTypeResolver | Schema is using generic type resolver from this property | [GenericTypeResolver.DEFAULT](https://github.com/aPureBase/KGraphQL/blob/master/kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/execution/GenericTypeResolver.kt) |
1312
| wrapErrors | | `true` |
1413
| timeout | | `null` |

gradle/libs.versions.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serializa
2727
jackson-core-databind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" }
2828
jackson-module-kotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "jackson" }
2929
aedile = { module = "com.sksamuel.aedile:aedile-core", version = "2.1.2" }
30-
deferredJsonBuilder = { module = "com.apurebase:DeferredJsonBuilder", version = "1.0.0" }
3130
ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }
3231
ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" }
3332
ktor-server-core = { module = "io.ktor:ktor-server-core", version.ref = "ktor" }

kgraphql-ktor-stitched/api/kgraphql-ktor-stitched.api

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ public final class com/apurebase/kgraphql/stitched/StitchedKGraphQL {
6060
}
6161

6262
public final class com/apurebase/kgraphql/stitched/schema/configuration/StitchedSchemaConfiguration : com/apurebase/kgraphql/configuration/SchemaConfiguration {
63-
public fun <init> (ZJLcom/fasterxml/jackson/databind/ObjectMapper;ZLkotlinx/coroutines/CoroutineDispatcher;ZLcom/apurebase/kgraphql/schema/execution/Executor;Ljava/lang/Long;ZLjava/util/Map;Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver;Lcom/apurebase/kgraphql/schema/execution/ArgumentTransformer;Lcom/apurebase/kgraphql/stitched/schema/execution/RemoteRequestExecutor;Ljava/lang/String;)V
64-
public synthetic fun <init> (ZJLcom/fasterxml/jackson/databind/ObjectMapper;ZLkotlinx/coroutines/CoroutineDispatcher;ZLcom/apurebase/kgraphql/schema/execution/Executor;Ljava/lang/Long;ZLjava/util/Map;Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver;Lcom/apurebase/kgraphql/schema/execution/ArgumentTransformer;Lcom/apurebase/kgraphql/stitched/schema/execution/RemoteRequestExecutor;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
63+
public fun <init> (ZJLcom/fasterxml/jackson/databind/ObjectMapper;ZLkotlinx/coroutines/CoroutineDispatcher;ZLjava/lang/Long;ZLjava/util/Map;Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver;Lcom/apurebase/kgraphql/schema/execution/ArgumentTransformer;Lcom/apurebase/kgraphql/stitched/schema/execution/RemoteRequestExecutor;Ljava/lang/String;)V
64+
public synthetic fun <init> (ZJLcom/fasterxml/jackson/databind/ObjectMapper;ZLkotlinx/coroutines/CoroutineDispatcher;ZLjava/lang/Long;ZLjava/util/Map;Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver;Lcom/apurebase/kgraphql/schema/execution/ArgumentTransformer;Lcom/apurebase/kgraphql/stitched/schema/execution/RemoteRequestExecutor;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
6565
public final fun getLocalUrl ()Ljava/lang/String;
6666
public final fun getRemoteExecutor ()Lcom/apurebase/kgraphql/stitched/schema/execution/RemoteRequestExecutor;
6767
}

kgraphql-ktor-stitched/src/main/kotlin/com/apurebase/kgraphql/stitched/schema/configuration/StitchedSchemaConfiguration.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.apurebase.kgraphql.stitched.schema.configuration
33
import com.apurebase.kgraphql.ExperimentalAPI
44
import com.apurebase.kgraphql.configuration.SchemaConfiguration
55
import com.apurebase.kgraphql.schema.execution.ArgumentTransformer
6-
import com.apurebase.kgraphql.schema.execution.Executor
76
import com.apurebase.kgraphql.schema.execution.GenericTypeResolver
87
import com.apurebase.kgraphql.stitched.schema.execution.RemoteRequestExecutor
98
import com.fasterxml.jackson.databind.ObjectMapper
@@ -21,7 +20,6 @@ class StitchedSchemaConfiguration(
2120
// execution
2221
coroutineDispatcher: CoroutineDispatcher,
2322
wrapErrors: Boolean,
24-
executor: Executor,
2523
timeout: Long?,
2624
// allow schema introspection
2725
introspection: Boolean = true,
@@ -37,7 +35,6 @@ class StitchedSchemaConfiguration(
3735
useDefaultPrettyPrinter,
3836
coroutineDispatcher,
3937
wrapErrors,
40-
executor,
4138
timeout,
4239
introspection,
4340
plugins,

kgraphql-ktor-stitched/src/main/kotlin/com/apurebase/kgraphql/stitched/schema/dsl/StitchedSchemaConfigurationDSL.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ open class StitchedSchemaConfigurationDSL : SchemaConfigurationDSL() {
2424
useDefaultPrettyPrinter = useDefaultPrettyPrinter,
2525
coroutineDispatcher = coroutineDispatcher,
2626
wrapErrors = wrapErrors,
27-
executor = executor,
2827
timeout = timeout,
2928
introspection = introspection,
3029
plugins = plugins,

kgraphql-ktor/src/test/kotlin/com/apurebase/kgraphql/KtorConfigurationTest.kt

Lines changed: 0 additions & 49 deletions
This file was deleted.

kgraphql/api/kgraphql.api

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,12 @@ public abstract interface class com/apurebase/kgraphql/configuration/PluginConfi
8282
}
8383

8484
public class com/apurebase/kgraphql/configuration/SchemaConfiguration {
85-
public fun <init> (ZJLcom/fasterxml/jackson/databind/ObjectMapper;ZLkotlinx/coroutines/CoroutineDispatcher;ZLcom/apurebase/kgraphql/schema/execution/Executor;Ljava/lang/Long;ZLjava/util/Map;Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver;Lcom/apurebase/kgraphql/schema/execution/ArgumentTransformer;)V
86-
public synthetic fun <init> (ZJLcom/fasterxml/jackson/databind/ObjectMapper;ZLkotlinx/coroutines/CoroutineDispatcher;ZLcom/apurebase/kgraphql/schema/execution/Executor;Ljava/lang/Long;ZLjava/util/Map;Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver;Lcom/apurebase/kgraphql/schema/execution/ArgumentTransformer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
85+
public fun <init> (ZJLcom/fasterxml/jackson/databind/ObjectMapper;ZLkotlinx/coroutines/CoroutineDispatcher;ZLjava/lang/Long;ZLjava/util/Map;Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver;Lcom/apurebase/kgraphql/schema/execution/ArgumentTransformer;)V
86+
public synthetic fun <init> (ZJLcom/fasterxml/jackson/databind/ObjectMapper;ZLkotlinx/coroutines/CoroutineDispatcher;ZLjava/lang/Long;ZLjava/util/Map;Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver;Lcom/apurebase/kgraphql/schema/execution/ArgumentTransformer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
8787
public final fun get (Lkotlin/reflect/KClass;)Ljava/lang/Object;
8888
public final fun getArgumentTransformer ()Lcom/apurebase/kgraphql/schema/execution/ArgumentTransformer;
8989
public final fun getCoroutineDispatcher ()Lkotlinx/coroutines/CoroutineDispatcher;
9090
public final fun getDocumentParserCacheMaximumSize ()J
91-
public final fun getExecutor ()Lcom/apurebase/kgraphql/schema/execution/Executor;
9291
public final fun getGenericTypeResolver ()Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver;
9392
public final fun getIntrospection ()Z
9493
public final fun getObjectMapper ()Lcom/fasterxml/jackson/databind/ObjectMapper;
@@ -613,7 +612,6 @@ public class com/apurebase/kgraphql/schema/dsl/SchemaConfigurationDSL {
613612
public final fun getAcceptSingleValueAsArray ()Z
614613
public final fun getCoroutineDispatcher ()Lkotlinx/coroutines/CoroutineDispatcher;
615614
public final fun getDocumentParserCacheMaximumSize ()J
616-
public final fun getExecutor ()Lcom/apurebase/kgraphql/schema/execution/Executor;
617615
public final fun getGenericTypeResolver ()Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver;
618616
public final fun getIntrospection ()Z
619617
public final fun getObjectMapper ()Lcom/fasterxml/jackson/databind/ObjectMapper;
@@ -626,7 +624,6 @@ public class com/apurebase/kgraphql/schema/dsl/SchemaConfigurationDSL {
626624
public final fun setAcceptSingleValueAsArray (Z)V
627625
public final fun setCoroutineDispatcher (Lkotlinx/coroutines/CoroutineDispatcher;)V
628626
public final fun setDocumentParserCacheMaximumSize (J)V
629-
public final fun setExecutor (Lcom/apurebase/kgraphql/schema/execution/Executor;)V
630627
public final fun setGenericTypeResolver (Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver;)V
631628
public final fun setIntrospection (Z)V
632629
public final fun setObjectMapper (Lcom/fasterxml/jackson/databind/ObjectMapper;)V
@@ -836,19 +833,6 @@ public class com/apurebase/kgraphql/schema/execution/ArgumentTransformer {
836833
public fun transformArguments (Ljava/lang/String;Ljava/lang/Object;Ljava/util/List;Lcom/apurebase/kgraphql/schema/model/ast/ArgumentNodes;Lcom/apurebase/kgraphql/request/Variables;Lcom/apurebase/kgraphql/schema/execution/Execution;Lcom/apurebase/kgraphql/Context;Lcom/apurebase/kgraphql/schema/model/FunctionWrapper;)Ljava/util/List;
837834
}
838835

839-
public final class com/apurebase/kgraphql/schema/execution/DataLoaderPreparedRequestExecutor : com/apurebase/kgraphql/schema/execution/RequestExecutor {
840-
public fun <init> (Lcom/apurebase/kgraphql/schema/DefaultSchema;)V
841-
public final fun getSchema ()Lcom/apurebase/kgraphql/schema/DefaultSchema;
842-
public fun suspendExecute (Lcom/apurebase/kgraphql/schema/execution/ExecutionPlan;Lcom/apurebase/kgraphql/request/VariablesJson;Lcom/apurebase/kgraphql/Context;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
843-
}
844-
845-
public final class com/apurebase/kgraphql/schema/execution/DataLoaderPreparedRequestExecutor$ExecutionContext {
846-
public fun <init> (Lcom/apurebase/kgraphql/schema/execution/DataLoaderPreparedRequestExecutor;Lcom/apurebase/kgraphql/request/Variables;Lcom/apurebase/kgraphql/Context;Ljava/util/Map;)V
847-
public final fun getLoaders ()Ljava/util/Map;
848-
public final fun getRequestContext ()Lcom/apurebase/kgraphql/Context;
849-
public final fun getVariables ()Lcom/apurebase/kgraphql/request/Variables;
850-
}
851-
852836
public class com/apurebase/kgraphql/schema/execution/DefaultGenericTypeResolver : com/apurebase/kgraphql/schema/execution/GenericTypeResolver {
853837
public fun <init> ()V
854838
public fun resolveMonad (Lkotlin/reflect/KType;)Lkotlin/reflect/KType;
@@ -899,14 +883,12 @@ public final class com/apurebase/kgraphql/schema/execution/Execution$Union : com
899883

900884
public final class com/apurebase/kgraphql/schema/execution/ExecutionOptions {
901885
public fun <init> ()V
902-
public fun <init> (Lcom/apurebase/kgraphql/schema/execution/Executor;Ljava/lang/Long;)V
903-
public synthetic fun <init> (Lcom/apurebase/kgraphql/schema/execution/Executor;Ljava/lang/Long;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
904-
public final fun component1 ()Lcom/apurebase/kgraphql/schema/execution/Executor;
905-
public final fun component2 ()Ljava/lang/Long;
906-
public final fun copy (Lcom/apurebase/kgraphql/schema/execution/Executor;Ljava/lang/Long;)Lcom/apurebase/kgraphql/schema/execution/ExecutionOptions;
907-
public static synthetic fun copy$default (Lcom/apurebase/kgraphql/schema/execution/ExecutionOptions;Lcom/apurebase/kgraphql/schema/execution/Executor;Ljava/lang/Long;ILjava/lang/Object;)Lcom/apurebase/kgraphql/schema/execution/ExecutionOptions;
886+
public fun <init> (Ljava/lang/Long;)V
887+
public synthetic fun <init> (Ljava/lang/Long;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
888+
public final fun component1 ()Ljava/lang/Long;
889+
public final fun copy (Ljava/lang/Long;)Lcom/apurebase/kgraphql/schema/execution/ExecutionOptions;
890+
public static synthetic fun copy$default (Lcom/apurebase/kgraphql/schema/execution/ExecutionOptions;Ljava/lang/Long;ILjava/lang/Object;)Lcom/apurebase/kgraphql/schema/execution/ExecutionOptions;
908891
public fun equals (Ljava/lang/Object;)Z
909-
public final fun getExecutor ()Lcom/apurebase/kgraphql/schema/execution/Executor;
910892
public final fun getTimeout ()Ljava/lang/Long;
911893
public fun hashCode ()I
912894
public fun toString ()Ljava/lang/String;
@@ -954,14 +936,6 @@ public final class com/apurebase/kgraphql/schema/execution/ExecutionPlan : java/
954936
public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object;
955937
}
956938

957-
public final class com/apurebase/kgraphql/schema/execution/Executor : java/lang/Enum {
958-
public static final field DataLoaderPrepared Lcom/apurebase/kgraphql/schema/execution/Executor;
959-
public static final field Parallel Lcom/apurebase/kgraphql/schema/execution/Executor;
960-
public static fun getEntries ()Lkotlin/enums/EnumEntries;
961-
public static fun valueOf (Ljava/lang/String;)Lcom/apurebase/kgraphql/schema/execution/Executor;
962-
public static fun values ()[Lcom/apurebase/kgraphql/schema/execution/Executor;
963-
}
964-
965939
public abstract interface class com/apurebase/kgraphql/schema/execution/GenericTypeResolver {
966940
public static final field Companion Lcom/apurebase/kgraphql/schema/execution/GenericTypeResolver$Companion;
967941
public abstract fun resolveMonad (Lkotlin/reflect/KType;)Lkotlin/reflect/KType;
@@ -986,7 +960,8 @@ public final class com/apurebase/kgraphql/schema/execution/ParallelRequestExecut
986960
}
987961

988962
public final class com/apurebase/kgraphql/schema/execution/ParallelRequestExecutor$ExecutionContext {
989-
public fun <init> (Lcom/apurebase/kgraphql/schema/execution/ParallelRequestExecutor;Lcom/apurebase/kgraphql/request/Variables;Lcom/apurebase/kgraphql/Context;)V
963+
public fun <init> (Lcom/apurebase/kgraphql/schema/execution/ParallelRequestExecutor;Lcom/apurebase/kgraphql/request/Variables;Lcom/apurebase/kgraphql/Context;Ljava/util/Map;)V
964+
public final fun getLoaders ()Ljava/util/Map;
990965
public final fun getRequestContext ()Lcom/apurebase/kgraphql/Context;
991966
public final fun getVariables ()Lcom/apurebase/kgraphql/request/Variables;
992967
}

kgraphql/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ dependencies {
3737
implementation(libs.jackson.core.databind)
3838
implementation(libs.jackson.module.kotlin)
3939
implementation(libs.aedile)
40-
implementation(libs.deferredJsonBuilder)
4140

4241
testImplementation(libs.kotest)
4342
testImplementation(libs.junit.jupiter.api)

kgraphql/src/main/kotlin/com/apurebase/kgraphql/configuration/SchemaConfiguration.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.apurebase.kgraphql.configuration
22

33
import com.apurebase.kgraphql.schema.execution.ArgumentTransformer
4-
import com.apurebase.kgraphql.schema.execution.Executor
54
import com.apurebase.kgraphql.schema.execution.GenericTypeResolver
65
import com.fasterxml.jackson.databind.ObjectMapper
76
import kotlinx.coroutines.CoroutineDispatcher
@@ -17,7 +16,6 @@ open class SchemaConfiguration(
1716
// execution
1817
val coroutineDispatcher: CoroutineDispatcher,
1918
val wrapErrors: Boolean,
20-
val executor: Executor,
2119
val timeout: Long?,
2220
// allow schema introspection
2321
val introspection: Boolean = true,

0 commit comments

Comments
 (0)