0

我有一个带有两个具体实现的 GraphQL 接口,就像这个人为的例子:

  sealed trait HelloWorld
  case object Hello extends HelloWorld
  case object World extends HelloWorld

  case class MyClass(id: String, otherThing: HelloWorld)

  val MyClassInterfaceType: InterfaceType[Unit, MyClass] = InterfaceType[Unit, MyClass](
    "MyClassInterface",
    () => fields[Unit, MyClass](
      Field("id", String, resolve = _.value.id)
    )

  val HelloMyClassType: ObjectType[Unit, MyClass] = ObjectType[Unit, MyClass](
    "Hello",
    interfaces[Unit, MyClass](MyClassInterface),
    fields[Unit, MyClass](
      Field("hello", BooleanType, resolve = _ => true)
    )
  )

  val WorldMyClassType: ObjectType[Unit, MyClass] = ObjectType[Unit, MyClass](
    "World",
    interfaces[Unit, MyClass](MyClassInterface),
    fields[Unit, MyClass](
      Field("world", BooleanType, resolve = _ => true)
    )
  )

由于我拥有的两种 GraphQL 类型都基于相同的底层类 ( MyClass),因此 Sangria 无法在我的 GraphQL 中看到我真正想要的类型,并且每次都选择相同的类型。

所以我的问题是:有没有办法根据基础类类型以外的标准将桑格利亚汽酒导向具体类型?我可以指定一个MyClass在运行时映射到正确 GraphQL 类型的函数吗?(例如通过查看HelloWorld枚举)

4

0 回答 0