diff options
author | Stewart Stewart <stewinsalot@gmail.com> | 2017-02-27 18:19:24 -0800 |
---|---|---|
committer | Stewart Stewart <stewinsalot@gmail.com> | 2017-02-28 09:37:13 -0800 |
commit | 2fd140c28076c511400d517ebc4ce59325a16559 (patch) | |
tree | dcc98197cd2ca09391464ff082613f258eb303b3 /src/main/scala/TypedIdTable.scala | |
parent | 6e9355aefe626e28309f76f30b3c0958ea0362e6 (diff) | |
download | slick-codegen-plugin-2fd140c28076c511400d517ebc4ce59325a16559.tar.gz slick-codegen-plugin-2fd140c28076c511400d517ebc4ce59325a16559.tar.bz2 slick-codegen-plugin-2fd140c28076c511400d517ebc4ce59325a16559.zip |
generate implicit along with primary key
Diffstat (limited to 'src/main/scala/TypedIdTable.scala')
-rw-r--r-- | src/main/scala/TypedIdTable.scala | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/scala/TypedIdTable.scala b/src/main/scala/TypedIdTable.scala index 740158d..0958ccf 100644 --- a/src/main/scala/TypedIdTable.scala +++ b/src/main/scala/TypedIdTable.scala @@ -48,5 +48,22 @@ class TypedIdSourceCodeGenerator( keyReferences.get(model).fold(super.rawType)(pKeyType) } } + + class TypedIdPrimaryKey(override val model: m.PrimaryKey) extends PrimaryKey(model) { primaryKey => + def `super.code` = s"""val $name = primaryKey("$dbName", ${compoundValue(columns.map(_.name))})""" + + override def code = { + val implicitKeyBaseMapper = + primaryKey.columns.headOption + .filter(_ => primaryKey.columns.length == 1) + .map { column => + val name = termName(column.rawName + "KeyMapper") + val tpe = s"BaseColumnType[column.rawName]" + val mapping = s"${modelTypeToColumnMaper(column.model.tpe)}[${pKeyTypeTag(column.model)}]" + s"implicit def $name: $tpe = $mapping\n" + } + implicitKeyBaseMapper.fold(super.code)(super.code + _) + } + } } } |