From 9c30310ca4f6223e65f8d607c953e18576648c9a Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Tue, 22 Nov 2016 21:20:38 -0500 Subject: Fix default Id implementation --- src/main/scala/CodegenPlugin.scala | 5 ++++- src/main/scala/NamespacedCodegen.scala | 14 ++++++++++---- 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 = { -- cgit v1.2.3