aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStewart Stewart <stewinsalot@gmail.com>2016-11-16 13:56:54 -0800
committerGitHub <noreply@github.com>2016-11-16 13:56:54 -0800
commit8a7d0ac4e5b4eaeb493a65d6f52cb16ef77dcff7 (patch)
tree0f5cf84cb4ed542a510e214a8bfeb17b05ede901
parent4a950f529691d60ecb58ae8a930af3858ed8f5e2 (diff)
parentd6a2e2265212bf7a38f9de7e8846bd1031827787 (diff)
downloadslick-codegen-plugin-8a7d0ac4e5b4eaeb493a65d6f52cb16ef77dcff7.tar.gz
slick-codegen-plugin-8a7d0ac4e5b4eaeb493a65d6f52cb16ef77dcff7.tar.bz2
slick-codegen-plugin-8a7d0ac4e5b4eaeb493a65d6f52cb16ef77dcff7.zip
Merge pull request #8 from drivergroup/TM-251-fix-codegenSchemaWhitelist-filter
TM-251 Fix codegen defaults
-rw-r--r--src/main/scala/CodegenPlugin.scala8
-rw-r--r--src/main/scala/NamespacedCodegen.scala24
2 files changed, 19 insertions, 13 deletions
diff --git a/src/main/scala/CodegenPlugin.scala b/src/main/scala/CodegenPlugin.scala
index 366ef19..8bde45d 100644
--- a/src/main/scala/CodegenPlugin.scala
+++ b/src/main/scala/CodegenPlugin.scala
@@ -19,10 +19,16 @@ object CodegenPlugin extends AutoPlugin {
Generator.run(
new java.net.URI(codegenURI.value),
codegenPackage.value,
- codegenSchemaWhitelist.value,
+ Some(codegenSchemaWhitelist.value).filter(_.nonEmpty),
codegenOutputPath.value,
codegenForeignKeys.value
)
}
+
+ lazy val baseCodegenSettings: Seq[Def.Setting[_]] = Seq(
+ codegen := slickCodeGenTask.value,
+ codegenSchemaWhitelist := List.empty,
+ codegenForeignKeys := Map.empty
+ )
}
}
diff --git a/src/main/scala/NamespacedCodegen.scala b/src/main/scala/NamespacedCodegen.scala
index d73fc3e..3ab22dc 100644
--- a/src/main/scala/NamespacedCodegen.scala
+++ b/src/main/scala/NamespacedCodegen.scala
@@ -16,14 +16,14 @@ import slick.model.{Column, Model, Table}
object Generator {
- def run(uri: URI, pkg: String, schemaNames: List[String], outputPath: String, manualForeignKeys: Map[(String, String), (String, String)]) = {
+ def run(uri: URI, pkg: String, schemaNames: Option[List[String]], outputPath: String, manualForeignKeys: Map[(String, String), (String, String)]) = {
val dc: DatabaseConfig[JdbcProfile] = DatabaseConfig.forURI[JdbcProfile](uri)
- val parsedSchemas: Map[String, List[String]] = SchemaParser.parse(schemaNames)
- val dbModel: Model = Await.result(dc.db.run(SchemaParser.createModel(dc.driver, parsedSchemas)), Duration.Inf)
+ val parsedSchemasOpt: Option[Map[String, List[String]]] = schemaNames.map(SchemaParser.parse)
+ val dbModel: Model = Await.result(dc.db.run(SchemaParser.createModel(dc.driver, parsedSchemasOpt)), Duration.Inf)
val generator = new Generator(uri, pkg, dbModel, outputPath, manualForeignKeys)
val generatedCode = generator.code
- parsedSchemas.keys.map(schemaName => FileHelpers.schemaOutputPath(outputPath, schemaName))
+ parsedSchemasOpt.getOrElse(Map()).keys.map(schemaName => FileHelpers.schemaOutputPath(outputPath, schemaName))
}
}
@@ -214,16 +214,16 @@ object SchemaParser {
.groupBy(_.head)
.mapValues(_.flatMap(_.tail))
- def createModel(jdbcProfile: JdbcProfile, mappedSchemas: Map[String, List[String]]): DBIO[Model] = {
+ def createModel(jdbcProfile: JdbcProfile, mappedSchemasOpt: Option[Map[String, List[String]]]): DBIO[Model] = {
val allTables: DBIO[Vector[MTable]] = MTable.getTables
- val filteredTables: DBIO[Vector[MTable]] = allTables.map(
- (tables: Vector[MTable]) => tables.filter(table =>
- table.name.schema.flatMap(mappedSchemas.get).exists(ts =>
- ts.isEmpty || ts.contains(table.name.name))
- )
- )
- jdbcProfile.createModel(Some(filteredTables))
+ val filteredTables = mappedSchemasOpt.map(mappedSchemas =>
+ allTables.map(
+ (tables: Vector[MTable]) => tables.filter(table =>
+ table.name.schema.flatMap(mappedSchemas.get).exists(ts =>
+ ts.isEmpty || ts.contains(table.name.name)))))
+
+ jdbcProfile.createModel(filteredTables orElse Some(allTables))
}
}