首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sangria:如何处理自定义类型

Sangria:如何处理自定义类型
EN

Stack Overflow用户
提问于 2019-02-21 02:05:30
回答 1查看 1.2K关注 0票数 0

试着和Sangria和Slick合作。对他们来说都是新手。

我有一堆表,它们共享一个公共字段列表。斯利克对此的描述如下:

代码语言:javascript
复制
case class CommonFields(created_by: Int = 0, is_deleted: Boolean = false)

trait CommonModel {
  def commonFields: CommonFields
  def created_by = commonFields.created_by
  def is_deleted = commonFields.is_deleted
}

case class User(id: Int,
                name: String,
                commonFields: CommonFields = CommonFields()) extends CommonModel

光滑的桌子:

代码语言:javascript
复制
  abstract class CommonTable [Model <: CommonModel] (tag: Tag, tableName: String) extends Table[Model](tag, tableName) {
    def created_by = column[Int]("created_by")
    def is_deleted = column[Boolean]("is_deleted")
  }

  case class CommonColumns(created_by: Rep[Int], is_deleted: Rep[Boolean])

  implicit object CommonShape extends CaseClassShape(
    CommonColumns.tupled, CommonFields.tupled
  )

  class UsersTable(tag: Tag) extends CommonTable[User](tag, "USERS") {
    def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)
    def name = column[String]("NAME")

    def * = (id,
      name,
      CommonColumns(created_by, is_deleted)) <> (User.tupled, User.unapply)
  }

  val Users = TableQuery[UsersTable]

问题在于Graphql

代码语言:javascript
复制
 lazy val UserType: ObjectType[Unit, User] = deriveObjectType[Unit, User]()

当我尝试使用UserType宏创建derivedObjectType时,它会抱怨

找不到适合.CommonFields的.CommonFields输出类型。如果您已经定义了它,请考虑将其隐式化,并确保它在作用域中可用。 UserType: ObjectTypeUnit,User = deriveObjectTypeUnit,User(

如何告诉Sangria/Graphql如何处理这个嵌套字段列表(来自CommonFields)?

请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2019-07-16 09:55:11

您正在为用户派生类型,但用户也有尚未导出的CommonFields。因此,它无法找到CommonFields的类型信息。派生两者并使派生对CommonFields而言是隐式的。

代码语言:javascript
复制
implicit val CommonFieldsType: ObjectType[Unit, CommonFields] = deriveObjectType[Unit, CommonFields]     
implicit val UserType: ObjectType[Unit, User] = deriveObjectType[Unit, User]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54798110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档