想象一下,我有这个作为我的模式,人们用鸟 ID 查询,如果他们询问位置,他们会得到关于该位置的所有信息。我还需要以“模式”格式定义位置吗?或者有什么方法可以立即在这里使用案例类?
如果您想了解一下我为什么要这样做的背景知识:我有一个大规模嵌套的 JSon 模式,几乎不可能管理它的每个级别。我很高兴用户请求顶层元素,该元素将返回该阶段定义的任何案例类。
import sangria.schema._
case class Location( lat: String, long: String )
case class Bird( name: String, location: List[Location] )
class BirdRepo {
def get(id: Int ) = {
if( id < 10 ) {
Bird( "Small",
List( Location("1", "2"), Location("3", "4")
))
} else {
Bird( "Big",
List( Location("5", "6"), Location("7", "8")
))
}
}
}
object SchemaDefinition {
val Bird = ObjectType(
"Bird",
"Some Bird",
fields[BirdRepo, Bird] (
Field( "name", StringType, resolve = _.value.name ),
Field( "location", List[Location], resolve = _.value.location)
// ^^ I know this is not possible
)
)
}