aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStewart Stewart <stewinsalot@gmail.com>2016-11-22 20:05:39 -0500
committerStewart Stewart <stewinsalot@gmail.com>2016-11-22 20:05:39 -0500
commitfaccc16b0db9cd132a8e31fe58fee18d4f131de1 (patch)
tree5cd28fb3a170876c48246430c04c7d71cc2bf993 /src
parent37162f9b8b6a8a4760877ca84127907c751282b8 (diff)
downloadslick-codegen-plugin-faccc16b0db9cd132a8e31fe58fee18d4f131de1.tar.gz
slick-codegen-plugin-faccc16b0db9cd132a8e31fe58fee18d4f131de1.tar.bz2
slick-codegen-plugin-faccc16b0db9cd132a8e31fe58fee18d4f131de1.zip
add paramater for list of imports per schema
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/CodegenPlugin.scala8
-rw-r--r--src/main/scala/NamespacedCodegen.scala21
2 files changed, 18 insertions, 11 deletions
diff --git a/src/main/scala/CodegenPlugin.scala b/src/main/scala/CodegenPlugin.scala
index 8b54887..01286ee 100644
--- a/src/main/scala/CodegenPlugin.scala
+++ b/src/main/scala/CodegenPlugin.scala
@@ -28,6 +28,10 @@ object CodegenPlugin extends AutoPlugin {
"codegen-id-type",
"The in-scope type `T` of kind `T[TableRow]` to apply in place T for id columns"
)
+ lazy val codegenSchemaImports = SettingKey[List[String]](
+ "codegen-schema-imports",
+ "A list of things to import into each schema definition"
+ )
lazy val slickCodeGenTask =
TaskKey[Unit]("gen-tables", "generate the table definitions")
@@ -41,6 +45,7 @@ object CodegenPlugin extends AutoPlugin {
codegenForeignKeys := Map.empty,
codegenSchemaBaseClassParts := List.empty,
codegenIdType := Option.empty,
+ codegenSchemaImports := List.empty,
slickCodeGenTask := Def.taskDyn {
Def.task {
Generator.run(
@@ -53,7 +58,8 @@ object CodegenPlugin extends AutoPlugin {
case Nil => "AnyRef"
case parts => parts.mkString(" with ")
},
- codegenIdType.value
+ codegenIdType.value,
+ codegenSchemaImports.value
)
}
}.value
diff --git a/src/main/scala/NamespacedCodegen.scala b/src/main/scala/NamespacedCodegen.scala
index bddbdea..2ac41e0 100644
--- a/src/main/scala/NamespacedCodegen.scala
+++ b/src/main/scala/NamespacedCodegen.scala
@@ -24,7 +24,8 @@ object Generator {
outputPath: String,
manualForeignKeys: Map[(String, String), (String, String)],
schemaBaseClass: String,
- idType: Option[String]) = {
+ idType: Option[String],
+ schemaImports: List[String]) = {
val dc: DatabaseConfig[JdbcProfile] =
DatabaseConfig.forURI[JdbcProfile](uri)
val parsedSchemasOpt: Option[Map[String, List[String]]] =
@@ -39,7 +40,8 @@ object Generator {
outputPath,
manualForeignKeys,
schemaBaseClass,
- idType)
+ idType,
+ schemaImports)
generator.code // Yes... Files are written as a side effect
parsedSchemasOpt
.getOrElse(Map())
@@ -60,12 +62,10 @@ class PackageNameGenerator(pkg: String, dbModel: Model)
|""".stripMargin
}
-class ImportGenerator(dbModel: Model) extends SourceCodeGenerator(dbModel) {
- val baseImports: String =
- s"""
- |import xyz.driver.core.Id
- |
- |""".stripMargin
+class ImportGenerator(dbModel: Model, schemaImports: List[String])
+ extends SourceCodeGenerator(dbModel) {
+
+ val baseImports: String = schemaImports.map("import " + _).mkString("\n")
val hlistImports: String =
if (tables.exists(_.hlistEnabled))
@@ -95,12 +95,13 @@ class Generator(uri: URI,
outputPath: String,
manualForeignKeys: Map[(String, String), (String, String)],
schemaBaseClass: String,
- idType: Option[String])
+ idType: Option[String],
+ schemaImports: List[String])
extends SourceCodeGenerator(dbModel)
with OutputHelpers {
val packageName = new PackageNameGenerator(pkg, dbModel).code
- val allImports: String = new ImportGenerator(dbModel).code
+ val allImports: String = new ImportGenerator(dbModel, schemaImports).code
private val defaultIdImplementation =
"""|case class Id[T](v: Int)