Skip to content

Commit

Permalink
Merge pull request #986 from sangria-graphql/clean_resolver
Browse files Browse the repository at this point in the history
prepare for custom resolver
  • Loading branch information
yanns committed Mar 31, 2023
2 parents b137c72 + c7887b1 commit 16aff66
Show file tree
Hide file tree
Showing 6 changed files with 2,011 additions and 1,824 deletions.
6 changes: 5 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,11 @@ lazy val core = project
ProblemFilters.exclude[DirectMissingMethodProblem](
"sangria.introspection.IntrospectionInterfaceType.curried"),
ProblemFilters.exclude[DirectMissingMethodProblem](
"sangria.introspection.IntrospectionInterfaceType.copy")
"sangria.introspection.IntrospectionInterfaceType.copy"),
ProblemFilters.exclude[ReversedMissingMethodProblem](
"sangria.execution.ExecutionScheme.resolverBuilder"),
ProblemFilters.exclude[IncompatibleTemplateDefProblem]("sangria.execution.Resolver"),
ProblemFilters.exclude[MissingClassProblem]("sangria.execution.Resolver$*")
),
Test / testOptions += Tests.Argument(TestFrameworks.ScalaTest, "-oF"),
libraryDependencies ++= Seq(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ sealed trait ExecutionScheme {
def flatMapFuture[Ctx, Res, T](future: Future[T])(resultFn: T => Result[Ctx, Res])(implicit
ec: ExecutionContext): Result[Ctx, Res]
def extended: Boolean
val resolverBuilder: ResolverBuilder
}

object ExecutionScheme extends AlternativeExecutionScheme {
Expand All @@ -34,6 +35,8 @@ object ExecutionScheme extends AlternativeExecutionScheme {
future.flatMap(resultFn)

def extended = false

override val resolverBuilder: ResolverBuilder = FutureResolverBuilder
}
}

Expand All @@ -46,7 +49,8 @@ trait EffectOps[F[_]] {

@ApiMayChange
class EffectBasedExecutionScheme[F[_]](
ops: EffectOps[F]
val ops: EffectOps[F],
val resolverBuilder: ResolverBuilder
) extends ExecutionScheme {
override type Result[Ctx, Res] = F[Res]
override def failed[Ctx, Res](error: Throwable): Result[Ctx, Res] =
Expand Down Expand Up @@ -85,6 +89,8 @@ trait AlternativeExecutionScheme {
future.flatMap(resultFn)

def extended = true

override val resolverBuilder: ResolverBuilder = FutureResolverBuilder
}

implicit def Stream[S[_]](implicit
Expand All @@ -107,6 +113,8 @@ trait AlternativeExecutionScheme {
def flatMapFuture[Ctx, Res, T](future: Future[T])(resultFn: T => Result[Ctx, Res])(implicit
ec: ExecutionContext): Result[Ctx, Res] =
stream.flatMapFuture(future)(resultFn)

override val resolverBuilder: ResolverBuilder = FutureResolverBuilder
}

implicit def StreamExtended[S[_]](implicit
Expand All @@ -129,6 +137,8 @@ trait AlternativeExecutionScheme {
def flatMapFuture[Ctx, Res, T](future: Future[T])(resultFn: T => Result[Ctx, Res])(implicit
ec: ExecutionContext): Result[Ctx, Res] =
stream.flatMapFuture(future)(resultFn)

override val resolverBuilder: ResolverBuilder = FutureResolverBuilder
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ case class Executor[Ctx, Root](
val middlewareVal = middleware.map(m => m.beforeQuery(middlewareCtx) -> m)
val deferredResolverState = deferredResolver.initialQueryState

val resolver = new Resolver[Ctx](
val resolver = scheme.resolverBuilder.build[Ctx](
marshaller,
middlewareCtx,
schema,
Expand Down
Loading

0 comments on commit 16aff66

Please sign in to comment.