aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStewart Stewart <stewinsalot@gmail.com>2017-02-27 14:23:18 -0500
committerStewart Stewart <stewinsalot@gmail.com>2017-02-27 14:23:18 -0500
commitc3c800fa19df297d0ae3c7fe687573a222b266de (patch)
treee94ece1fad320080a830b966a5ecf2cda851dddb
parent4433116ef5c57e0970e6d1a668dfc189ffe96cba (diff)
downloadslick-codegen-plugin-c3c800fa19df297d0ae3c7fe687573a222b266de.tar.gz
slick-codegen-plugin-c3c800fa19df297d0ae3c7fe687573a222b266de.tar.bz2
slick-codegen-plugin-c3c800fa19df297d0ae3c7fe687573a222b266de.zip
quick and dirty keymapper based on underlying type
-rw-r--r--src/main/scala/TypedIdTable.scala16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main/scala/TypedIdTable.scala b/src/main/scala/TypedIdTable.scala
index 1a8f986..71cffd6 100644
--- a/src/main/scala/TypedIdTable.scala
+++ b/src/main/scala/TypedIdTable.scala
@@ -10,6 +10,12 @@ class TypedIdSourceCodeGenerator(
val manualReferences =
SchemaParser.references(databaseModel, manualForeignKeys)
+ val rawTypeToColumnMaper = Map(
+ "java.util.UUID" -> "uuidKeyMapper",
+ "String" -> "stringKeyMapper",
+ "Int" -> "intKeyMapper"
+ )
+
def derefColumn(table: m.Table, column: m.Column): (m.Table, m.Column) = {
val referencedColumn: Seq[(m.Table, m.Column)] =
table.foreignKeys
@@ -36,6 +42,16 @@ class TypedIdSourceCodeGenerator(
s"$idTypeName[$schemaObjectName.$rowTypeName]"
}
+ override def code = {
+ val (referencedTable, referencedColumn) =
+ derefColumn(table.model, column.model)
+ if (referencedColumn.options.contains(
+ slick.ast.ColumnOption.PrimaryKey))
+ super.code + s"(${rawTypeToColumnMaper(model.tpe)})"
+ else
+ super.code
+ }
+
override def rawType: String = {
// write key columns as Id types
val (referencedTable, referencedColumn) =