can someone help me with the mutation?
Schema
implicit val inComercioType = deriveObjectType[DataRepo, comercio]()
val ComercioInObject = {
InputObjectType(
name = "Insert Comercio",
description = "",
List(
InputField(
name = "condicion",
fieldType = StringType),
InputField(
name = "laltitud",
fieldType = BigDecimalType),
InputField(
name = "longitud",
fieldType = BigDecimalType),
InputField(
name = "distancia",
fieldType = IntType),
)
)
}
val Condicion: Argument[String] = Argument("condicion", StringType)
val Latitud: Argument[BigDecimal] = Argument("latitud", BigDecimalType)
val Longitud: Argument[BigDecimal] = Argument("longitud", BigDecimalType)
val Distancia: Argument[Int] = Argument("distancia", IntType)
val MutationType =
ObjectType(
"Mutation",
fields[DataRepo, Unit](
Field(
name ="addComercios",
fieldType = ComercioOutObject,
arguments = Condicion :: Latitud :: Longitud :: Distancia :: Nil,
resolve = c => c.ctx.gqlAddComercios(c.arg(Condicion),c.arg(Latitud) ,c.arg(Longitud),c.arg(Distancia))
),
)
)
val SchemaDefinition: Schema[DataRepo, Unit] = Schema(QueryType,Some(MutationType))
Datarepo
def gqlAddComercios(condicion: String,latitud:BigDecimal,longitud:BigDecimal,distancia:Int=250):List[getComercio] = comercio(condicion,latitud,longitud,distancia,token).insertContent
Hello,
I have the following field relation:
Field("setups",
fieldType = ListType(TransportSetup.toGraphType),
arguments = fetchTransportSetupArgs.createGraphTypeArgs,
resolve = ctx => setupFetcher.deferRelSeq(linkSetupByRouteId, ctx.value.getId)
),
I would like to pass the arguments of the field to my fetcher, i tried to make work deferred resolver but no luck so far
ID
. You can define it to what type you need.DeferredValue
and DeferredResolver
.DeferredResolver.fetchersWithFallback
.
As I understand it: if you have n different values from n branches, this method is used to know what to do with those n values.
For example, in the MeasureComplexity
:
def reduceAlternatives(alternatives: Seq[Acc]) = alternatives.max
In TagCollector
, we collect all tags:
def reduceAlternatives(alternatives: Seq[Acc]) = alternatives.toVector.flatten
I've been trying to dig into Sangria Fetchers (Data Loaders) and couldn't quite figure out if they go across requests or if they only act per-request. I found this PR mentioning that the caching is per-request, but haven't found anything to confirm if the batching/data loader part is as well 🤔 sangria-graphql/sangria#447
For example, imagine this scenario:
Would this result in 1 database calls (so, it works across requests) or 2 database calls (it's per-request)?
Field(
"field_name",
arguments = IncludeKeys :: ExcludeKeys :: Limit :: Offset :: SortArg :: Nil,
resolve = ctx => {
val includes = ctx.arg(IncludeKeys)
val excludes = ctx.arg(ExcludeKeys)
val limit = ctx.arg(Limit)
val offset = ctx.arg(Offset)
I'm trying to make a HandledException
and include a custom JSON response. That goes through the additionalFields: Map[String, ResultMarshaller#Node] = Map.empty,
field, which Node
appears to be an interface, perhaps supporting other libraries (ex: io.circe.Json).
Is there a way I can somehow pass Json directly into the HandledException.additionalFields
?
import _root_.sangria.marshalling.circe._
val params = Map[String, ResultMarshaller#Node]("" -> io.circe.Json.obj())
HandledException(
log.traceId,
params,
addFieldsInError = true,
addFieldsInExtensions = false,
)
import _root_.sangria.marshalling.circe._
val json: CirceResultMarshaller.Node = Json.obj(???)
val params: Map[String, ResultMarshaller#Node] = Map[String, ResultMarshaller#Node](
"error" -> json
)
HandledException(
log.traceId,
params,
addFieldsInError = true,
addFieldsInExtensions = false,
)
circe-optics
appears to only be available in Scala 2
, which it's transitive dependencies are causing conflicts. The fastest workaround will probably be dropping circe-optics
, since I only have a few places which use it, although I'm also asking for advice on the circe gitter.
deriveObjectType
and macros. implicit val _ot: ObjectType[Ctx, UpdatePostGql] =
deriveObjectType[Ctx, UpdatePostGql](
ObjectTypeName("UpdatePost")
)
Exception occurred while executing macro expansion.
scala.MatchError: OrType(AndType(TypeRef(TermRef(TermRef(TermRef(TermRef(TermRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object ai),object tagr),object graphql),object tagr),object schema),object types),class BodyInputGql),AppliedType(TypeRef(TermRef(TermRef(ThisType(TypeRef(NoPrefix,module class sangria)),object util),tag),type Tagged),List(TypeRef(TermRef(TermRef(ThisType(TypeRef(NoPrefix,module class sangria)),object marshalling),FromInput),InputObjectResult)))),TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Null)) (of class dotty.tools.dotc.core.Types$CachedOrType)
at dotty.tools.dotc.transform.TypeUtils$.companionRef(TypeUtils.scala:91)
at dotty.tools.dotc.typer.Synthesizer.companionPath(Synthesizer.scala:252)
at dotty.tools.dotc.typer.Synthesizer.productMirror(Synthesizer.scala:311)
at dotty.tools.dotc.typer.Synthesizer.$init$$$anonfun$6$$anonfun$1$$anonfun$1$$anonfun$1(Synthesizer.scala:396)
at dotty.tools.dotc.typer.Synthesizer.makeMirror(Synthesizer.scala:388)
at dotty.tools.dotc.typer.Synthesizer.$init$$$anonfun$6$$anonfun$1(Synthesizer.scala:396)
at dotty.tools.dotc.typer.Synthesizer.$init$$$anonfun$8$$anonfun$1(Synthesizer.scala:413)
at dotty.tools.dotc.typer.Synthesizer.recur$1(Synthesizer.scala:556)
at dotty.tools.dotc.typer.Synthesizer.tryAll(Synthesizer.scala:561)
at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:857)
at dotty.tools.dotc.typer.Implicits.inferImplicitArg$(Implicits.scala:785)
at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:117)
at dotty.tools.dotc.typer.Typer.implicitArgs$1(Typer.scala:3451)
at dotty.tools.dotc.typer.Typer.addImplicitArgs$1(Typer.scala:3487)
at dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$1(Typer.scala:3563)
at dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:3761)
at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3995)
at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:3329)
at dotty.tools.dotc.typer.Typer.readapt$1(Typer.scala:3340)
at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3982)
at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:3329)
at dotty.tools.dotc.typer.Implicits.typedImplicit(Implicits.scala:1053)
at dotty.tools.dotc.typer.Implicits.typedImplicit$(Implicits.scala:785)
at dotty.tools.dotc.typer.Typer.typedImplicit(Typer.scala:117)
at dotty.tools.dotc.typer.Implicits$ImplicitSearch.tryImplicit(Implicits.scala:1173)
at dotty.tools.dotc.typer.Implicits$ImplicitSearch.rank$1(Implicits.scala:1272)
at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1442)
at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1470)
at dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1503)
at dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:997)
at dotty.tools.dotc.typer.Implicits.inferImplicit$(Implicits.scala:785)
at dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:117)
at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:851)
at dotty.tools.dotc.typer.Implicits.inferImplicitArg$(Implicits.scala:785)
at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:117)
at dotty.tools.dotc.typer.Typer.implicitArgs$1(Typer.scala:3451)
at dotty.tools.dotc.typer.Typer.addImplicitArgs$1(Typer.scala:3487)
at dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$1(Typer.scala:3563)
at dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:3761)
at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3995)
at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:3329)
at dotty.tools.dotc.typer.Typer.readapt$1(Typer.scala:3340)
at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3982)
at dotty.tools.dot
@GraphQLExclude
and @GraphQLField
annotations. case class UpdatePostGql(
@GraphQLExclude
ctx: Ctx,
@GraphQLExclude
id: PostId,
) {
@GraphQLField
def publishDraft(): Future[PostGql] = ???
@GraphQLField
def body(body: BodyInputGql): Future[PostGql] = ???
@GraphQLField
def publishVersion(index: Int): Future[PostGql] = ???
}
@yanns No problem, a much bigger thank you for maintaining and supporting Sangria.
Do you have any ideas about when you expect the bug to be fixed? I'm just trying to determine whether or not to go through the effort of switching from derived to manual, since the one final place this bug appears is the very top-level query type
containing all of the other query types.