2015-08-28 2 views
0

Я проектирую DAO в slick 3.0. У меня есть проблема в том, что каждая таблице в моей схеме есть эти 3 общих столбцы:Как создать общую схему в Slick 3.0?

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) 
} 

ответ

0

я решил. Это общая схема:

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) 
}