Graphql Sangria 多对多示例

Graphql Sangria Many-to-Many example

我正在处理与 Sangria 和 Slick 的多对多关系。 我有 3 个对象:Role、Permission 和 RolePermission(映射 table)

case class Role(id: Long, name: String)
case class Permission(id: Long, name: String)
case class RolePermission(id: Long, roleId: Long, permissionId: Long)

到目前为止我想出了如何定义关系:

val permissionsByRoleId = Relation[Permission, (RolePermission, Permission), Long]("permissionsByRoleId", tmp ⇒ Seq(tmp._1.roleId), _._2)

我不知道如何定义 fetcher 以及如何将正确的字段添加到 Role Schema,以便我可以检索通过中间 table 传递的 Role 权限。

有什么帮助吗?

您必须为两个相关实体定义 Relation 类型。在 Whosebug 的简短评论中回答并不容易,但我在我的博客 post 中解释了这种关系:https://scalac.io/akka-http-sangria-graphql-backend#implementing-many-to-many-relation 我希望它有所帮助..