【问题标题】:How can I design a shared schema in Slick 3.0?如何在 Slick 3.0 中设计共享模式?
【发布时间】:2015-08-28 20:19:55
【问题描述】:

我正在 slick 3.0 中设计一个 DAO。我遇到的问题是我的架构中的每个表都有这 3 个常见的列:

  def id = column[UUID]("id", O.PrimaryKey)
  def createdDate = column[Timestamp]("created_date")
  def updatedDate = column[Timestamp]("updated_date")

是否有将它们放入特征并从所有其他模式类扩展的设计?我不想多次重复复制和粘贴这段代码。

我的一个班级是:

class EmailParameterSchema(tag: Tag) extends Table[EmailParameter](tag, "email_parameter") {
  def id = column[UUID]("id", O.PrimaryKey)
  def paramKey = column[String]("param_key")
  def paramValue = column[String]("param_value")
  def emailQueueId = column[UUID]("email_queue_id")
  def createdDate = column[Timestamp]("created_date")
  def updatedDate = column[Timestamp]("updated_date")

  def * = (id, paramKey, paramValue, emailQueueId,createdDate,updatedDate) <> (EmailParameter.tupled, EmailParameter.unapply)
}

【问题讨论】:

    标签: database scala dao slick spray


    【解决方案1】:

    我已经解决了。这是共享架构:

    trait CommonSchema[A] extends Table[A] {
      def id = column[UUID]("id", O.PrimaryKey)
      def createdDate = column[Timestamp]("created_date")
      def updatedDate = column[Timestamp]("updated_date")
    }
    

    这就是它的使用方法:

    class EmailParameterSchema(tag: Tag) extends Table[EmailParameter](tag, "email_parameter") with CommonSchema[EmailParameter]{
      def paramKey = column[String]("param_key")
      def paramValue = column[String]("param_value")
      def emailQueueId = column[UUID]("email_queue_id")
    
      def * = (id, paramKey, paramValue, emailQueueId,createdDate,updatedDate) <> (EmailParameter.tupled, EmailParameter.unapply)
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-01
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 2016-02-12
      • 2011-07-01
      • 1970-01-01
      相关资源
      最近更新 更多