隐含列选项的自定义列类型

时间:2016-05-02 20:11:24

标签: scala slick

我有大量的Slick表格,ID列定义为

def id = column[Int]("ID", O.PrimaryKey, O.AutoInc, O DBType "INT UNSIGNED")

我想知道是否有办法创建一个自定义IDPK类型,以某种方式“暗示”使用上面显示的各种选项,例如。

case class IDPK(id: Int) extends AnyVal

def id = column[IDPK]("ID")
  // O.PrimaryKey, O.AutoInc, O DBType "INT UNSIGNED" are all implied

我意识到我可以按照def makeIDPK = column[Int]("ID", .....)的方式创建一个便利函数,但我的问题是关于是否可以使某种类型暗示某些列选项。

我注意到,如果我运行show create table <tablename>,则有一些我没有明确说明的选项,例如非选项列的NOT NULL或选项列的DEFAULT NULL。因此,我希望得到一个“是”的答案,但在查看Slick文档时我无法找到类似的内容。

1 个答案:

答案 0 :(得分:-1)

您可以定义一个接收类型并创建列的函数。类似的东西:

def makeColumn[T](name: String): Column[Int] = 
  column[Int](name, O.PrimaryKey, O.AutoInc, O DBType "INT UNSIGNED")

def id = makeColumn("id")