aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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) =