aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/scala/CodegenPlugin.scala5
-rw-r--r--src/main/scala/NamespacedCodegen.scala14
2 files changed, 14 insertions, 5 deletions
diff --git a/src/main/scala/CodegenPlugin.scala b/src/main/scala/CodegenPlugin.scala
index 01286ee..1286919 100644
--- a/src/main/scala/CodegenPlugin.scala
+++ b/src/main/scala/CodegenPlugin.scala
@@ -54,7 +54,10 @@ object CodegenPlugin extends AutoPlugin {
Some(codegenSchemaWhitelist.value).filter(_.nonEmpty),
codegenOutputPath.value,
codegenForeignKeys.value,
- codegenSchemaBaseClassParts.value match {
+ (if (codegenIdType.value.isEmpty)
+ codegenSchemaBaseClassParts.value :+ "DefaultIdTypeMapper"
+ else
+ codegenSchemaBaseClassParts.value) match {
case Nil => "AnyRef"
case parts => parts.mkString(" with ")
},
diff --git a/src/main/scala/NamespacedCodegen.scala b/src/main/scala/NamespacedCodegen.scala
index 2ac41e0..42c53f5 100644
--- a/src/main/scala/NamespacedCodegen.scala
+++ b/src/main/scala/NamespacedCodegen.scala
@@ -103,11 +103,17 @@ class Generator(uri: URI,
val packageName = new PackageNameGenerator(pkg, dbModel).code
val allImports: String = new ImportGenerator(dbModel, schemaImports).code
- private val defaultIdImplementation =
- """|case class Id[T](v: Int)
- |object Id {
+ val defaultIdImplementation =
+ """|final case class Id[T](v: Int)
+ |trait DefaultIdTypeMapper {
+ | val database: xyz.driver.core.database.Database
+ | import database.profile.api._
| implicit def idTypeMapper[A]: BaseColumnType[Id[A]] = MappedColumnType.base[Id[A], Int](_.v, Id(_))
- |}""".stripMargin
+ |}
+ |""".stripMargin
+
+ val defaultIdTypeMapper =
+ "implicit def idTypeMapper[A]: BaseColumnType[Id[A]] = MappedColumnType.base[Id[A], Int](_.v, Id(_))\n"
override def code: String = {