From c3c800fa19df297d0ae3c7fe687573a222b266de Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Mon, 27 Feb 2017 14:23:18 -0500 Subject: quick and dirty keymapper based on underlying type --- src/main/scala/TypedIdTable.scala | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') 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) = -- cgit v1.2.3