Scala 3 different schema derivation nested types
guymers opened this issue · comments
The following produces a different schema depending on the Scala version:
sealed trait Level1
object Level1 {
implicit val schema: Schema[Any, Level1] = Schema.gen
sealed trait Level2 extends Level1
object Level2 {
implicit val schema: Schema[Any, Level2] = Schema.gen
case class Level3(value: Boolean) extends Level2
object Level3 {
implicit val schema: Schema[Any, Level3] = Schema.gen
}
}
}
case class Queries(
level: Level1,
)
object Queries {
implicit val schema: Schema[Any, Queries] = Schema.gen
}
val schema = {
val queries = Queries(level = Level1.Level2.Level3(false))
caliban.graphQL(RootResolver(queries))
}
Scala 2:
schema {
query: Queries
}
union Level1 = Level3
type Level3 {
value: Boolean!
}
type Queries {
level: Level1!
}
Scala 3:
schema {
query: Queries
}
enum Level1 {
Level2
}
type Queries {
level: Level1!
}