diff options
author | Stewart Stewart <stewinsalot@gmail.com> | 2017-02-27 14:23:18 -0500 |
---|---|---|
committer | Stewart Stewart <stewinsalot@gmail.com> | 2017-02-27 14:23:18 -0500 |
commit | c3c800fa19df297d0ae3c7fe687573a222b266de (patch) | |
tree | e94ece1fad320080a830b966a5ecf2cda851dddb | |
parent | 4433116ef5c57e0970e6d1a668dfc189ffe96cba (diff) | |
download | slick-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.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) = |