diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/scala/TypedIdTable.scala | 16 |
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) = |