aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStewart Stewart <stewinsalot@gmail.com>2017-05-30 17:46:09 -0700
committerGitHub <noreply@github.com>2017-05-30 17:46:09 -0700
commitf58872065d859cdc3ce8489acdf0b443041e37a3 (patch)
treeaf6a6f9ff1d33fccb812ab4655678a9417388551
parent25c43332dd037da26341b5ccd27aca0b6a58caed (diff)
parent66f6f78b9230b3a59ab2d77c31b03f209c0937f8 (diff)
downloadslick-codegen-plugin-f58872065d859cdc3ce8489acdf0b443041e37a3.tar.gz
slick-codegen-plugin-f58872065d859cdc3ce8489acdf0b443041e37a3.tar.bz2
slick-codegen-plugin-f58872065d859cdc3ce8489acdf0b443041e37a3.zip
Merge branch 'master' into row-import-statements
-rw-r--r--src/main/scala/Main.scala10
-rw-r--r--src/main/scala/SchemaParser.scala20
-rw-r--r--src/main/scala/TypedIdTable.scala2
-rw-r--r--version.sbt2
4 files changed, 24 insertions, 10 deletions
diff --git a/src/main/scala/Main.scala b/src/main/scala/Main.scala
index 866023d..e71a9e8 100644
--- a/src/main/scala/Main.scala
+++ b/src/main/scala/Main.scala
@@ -52,13 +52,14 @@ object Generator {
val dc: DatabaseConfig[JdbcProfile] =
DatabaseConfig.forURI[JdbcProfile](uri)
val parsedSchemasOpt: Option[Map[String, List[String]]] =
- schemaNames.map(SchemaParser.parse)
+ schemaNames.map(ModelTransformation.parseSchemaList)
def importStatements(imports: List[String]) = imports.map("import " + _).mkString("\n")
try {
val dbModel: slick.model.Model = Await.result(
- dc.db.run(SchemaParser.createModel(dc.driver, parsedSchemasOpt)),
+ dc.db.run(
+ ModelTransformation.createModel(dc.driver, parsedSchemasOpt)),
Duration.Inf)
parsedSchemasOpt.getOrElse(Map.empty).foreach {
@@ -68,9 +69,8 @@ object Generator {
.getFragment()}").driver"""
val schemaOnlyModel = Await.result(
- dc.db.run(
- SchemaParser.createModel(dc.driver,
- Some(Map(schemaName -> tables)))),
+ dc.db.run(ModelTransformation
+ .createModel(dc.driver, Some(Map(schemaName -> tables)))),
Duration.Inf)
val rowGenerator = new RowSourceCodeGenerator(
diff --git a/src/main/scala/SchemaParser.scala b/src/main/scala/SchemaParser.scala
index 1186f11..6c3dd8c 100644
--- a/src/main/scala/SchemaParser.scala
+++ b/src/main/scala/SchemaParser.scala
@@ -3,9 +3,22 @@ import scala.concurrent.ExecutionContext.Implicits.global
import slick.dbio.DBIO
import slick.driver.JdbcProfile
import slick.jdbc.meta.MTable
+import slick.profile.RelationalProfile.ColumnOption.Length
+import slick.profile.SqlProfile.ColumnOption.SqlType
import slick.{model => m}
-object SchemaParser {
+object ModelTransformation {
+
+ def citextNoLength(dbModel: m.Model): m.Model =
+ dbModel.copy(tables = dbModel.tables.map(table =>
+ table.copy(columns = table.columns.map(column =>
+ if (column.options contains SqlType("citext")) {
+ column.copy(options = column.options.filter {
+ case length: Length => false
+ case option => true
+ })
+ } else column))))
+
def references(dbModel: m.Model,
tcMappings: Map[(String, String), (String, String)])
: Map[(String, String), (m.Table, m.Column)] = {
@@ -26,7 +39,8 @@ object SchemaParser {
}
}
- def parse(schemaTableNames: List[String]): Map[String, List[String]] =
+ def parseSchemaList(
+ schemaTableNames: List[String]): Map[String, List[String]] =
schemaTableNames
.map(_.split('.'))
.groupBy(_.head)
@@ -55,6 +69,6 @@ object SchemaParser {
}
}
- jdbcProfile.createModel(filteredTables)
+ jdbcProfile.createModel(filteredTables).map(citextNoLength)
}
}
diff --git a/src/main/scala/TypedIdTable.scala b/src/main/scala/TypedIdTable.scala
index 2e58cd5..a0f3b57 100644
--- a/src/main/scala/TypedIdTable.scala
+++ b/src/main/scala/TypedIdTable.scala
@@ -8,7 +8,7 @@ class TypedIdSourceCodeGenerator(
manualForeignKeys: Map[(String, String), (String, String)]
) extends SourceCodeGenerator(singleSchemaModel) {
val manualReferences =
- SchemaParser.references(databaseModel, manualForeignKeys)
+ ModelTransformation.references(databaseModel, manualForeignKeys)
val modelTypeToColumnMaper = Map(
"java.util.UUID" -> "uuidKeyMapper",
diff --git a/version.sbt b/version.sbt
index 23234dd..aa25108 100644
--- a/version.sbt
+++ b/version.sbt
@@ -1 +1 @@
-version in ThisBuild := "0.9.5-SNAPSHOT"
+version in ThisBuild := "0.9.6-SNAPSHOT"