aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStewart Stewart <stewinsalot@gmail.com>2017-09-22 18:22:58 -0700
committerStewart Stewart <stewinsalot@gmail.com>2017-09-22 18:34:11 -0700
commitfbb85ad4ba79c74544d6c804bbbf0a7ef350b113 (patch)
treed196723bc77eec582bcb7cb203041c12cf1c70ac
parent94e2a082467c5fbf70490c33ebe25ca6d2318b8e (diff)
downloadslick-codegen-plugin-fbb85ad4ba79c74544d6c804bbbf0a7ef350b113.tar.gz
slick-codegen-plugin-fbb85ad4ba79c74544d6c804bbbf0a7ef350b113.tar.bz2
slick-codegen-plugin-fbb85ad4ba79c74544d6c804bbbf0a7ef350b113.zip
use Driver linting/formatting/style settings
-rw-r--r--.scalafmt.conf29
-rw-r--r--build.sbt4
-rw-r--r--scalastyle-config.xml114
-rw-r--r--src/main/scala/CodegenPlugin.scala22
-rw-r--r--src/main/scala/Generators.scala89
-rw-r--r--src/main/scala/Main.scala44
-rw-r--r--src/main/scala/OutputHelpers.scala35
-rw-r--r--src/main/scala/SchemaParser.scala19
-rw-r--r--src/main/scala/TypedIdTable.scala34
9 files changed, 253 insertions, 137 deletions
diff --git a/.scalafmt.conf b/.scalafmt.conf
new file mode 100644
index 0000000..8a5d14f
--- /dev/null
+++ b/.scalafmt.conf
@@ -0,0 +1,29 @@
+# scalafmt sbt plugin config
+# refer to https://olafurpg.github.io/scalafmt/#Configuration for properties
+
+project.git = true
+
+style = defaultWithAlign
+maxColumn = 120
+
+docstrings = ScalaDoc
+
+continuationIndent.callSite = 2
+continuationIndent.defnSite = 8
+
+rewriteTokens: {
+ "⇒" = "=>"
+ "←" = "<-"
+}
+danglingParentheses = false
+align.arrowEnumeratorGenerator = true
+align.openParenCallSite = true
+spaces.afterTripleEquals = true
+spaces.inImportCurlyBraces = false
+newlines.alwaysBeforeCurlyBraceLambdaParams = false
+newlines.sometimesBeforeColonInMethodReturnType = false
+binPack.parentConstructors = true
+assumeStandardLibraryStripMargin = true
+
+# align.openParenCallSite = <value>
+# align.openParenDefnSite = <value>
diff --git a/build.sbt b/build.sbt
index 7cf3de0..81f7994 100644
--- a/build.sbt
+++ b/build.sbt
@@ -26,3 +26,7 @@ libraryDependencies ++= Seq(
"com.typesafe.slick" %% "slick-codegen" % slickVersionValue,
"com.typesafe.slick" %% "slick-hikaricp" % slickVersionValue
)
+
+lintingSettings
+
+formatSettings
diff --git a/scalastyle-config.xml b/scalastyle-config.xml
new file mode 100644
index 0000000..bbd85bc
--- /dev/null
+++ b/scalastyle-config.xml
@@ -0,0 +1,114 @@
+<scalastyle>
+ <name>Scalastyle standard configuration</name>
+ <check level="error" class="org.scalastyle.file.FileTabChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.file.FileLengthChecker" enabled="true">
+ <parameters>
+ <parameter name="maxFileLength"><![CDATA[800]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.file.HeaderMatchesChecker" enabled="false">
+ <parameters>
+ <parameter name="header">package</parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.SpacesBeforePlusChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.SpacesAfterPlusChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.file.WhitespaceEndOfLineChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.file.FileLineLengthChecker" enabled="true">
+ <parameters>
+ <parameter name="maxLineLength"><![CDATA[160]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.ClassNamesChecker" enabled="true">
+ <parameters>
+ <parameter name="regex"><![CDATA[[A-Z][A-Za-z]*]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.ObjectNamesChecker" enabled="true">
+ <parameters>
+ <parameter name="regex"><![CDATA[[A-Za-z]*]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.PackageObjectNamesChecker" enabled="true">
+ <parameters>
+ <parameter name="regex"><![CDATA[^[a-z][A-Za-z]*$]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.EqualsHashCodeChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.IllegalImportsChecker" enabled="true">
+ <parameters>
+ <parameter name="illegalImports"><![CDATA[sun._,java.awt._]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.ParameterNumberChecker" enabled="true">
+ <parameters>
+ <parameter name="maxParameters"><![CDATA[15]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.MagicNumberChecker" enabled="false">
+ <parameters>
+ <parameter name="ignore"><![CDATA[-1,0,1,2,3]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.NoWhitespaceBeforeLeftBracketChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.NoWhitespaceAfterLeftBracketChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.ReturnChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.NullChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.NoCloneChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.NoFinalizeChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.CovariantEqualsChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
+ <parameters>
+ <parameter name="regex"><![CDATA[println]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.NumberOfTypesChecker" enabled="true">
+ <parameters>
+ <parameter name="maxTypes"><![CDATA[100]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.CyclomaticComplexityChecker" enabled="true">
+ <parameters>
+ <parameter name="maximum"><![CDATA[50]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.UppercaseLChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.SimplifyBooleanExpressionChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.IfBraceChecker" enabled="true">
+ <parameters>
+ <parameter name="singleLineAllowed"><![CDATA[true]]></parameter>
+ <parameter name="doubleLineAllowed"><![CDATA[true]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.MethodLengthChecker" enabled="true">
+ <parameters>
+ <parameter name="maxLength"><![CDATA[100]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.MethodNamesChecker" enabled="true">
+ <parameters>
+ <parameter name="regex"><![CDATA[^[A-Za-z\\*][A-Za-z0-9]*$]]></parameter>
+ <parameter name="ignoreRegex">`.*`</parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.ClassTypeParameterChecker" enabled="false">
+ <parameters>
+ <parameter name="regex"><![CDATA[^[A-Za-z]*$]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.NumberOfMethodsInTypeChecker" enabled="true">
+ <parameters>
+ <parameter name="maxMethods"><![CDATA[50]]></parameter>
+ </parameters>
+ </check>
+ <check level="error" class="org.scalastyle.scalariform.PublicMethodsHaveTypeChecker" enabled="false"/>
+ <check level="error" class="org.scalastyle.file.NewLineAtEofChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.file.NoNewLineAtEofChecker" enabled="false"/>
+ <check level="error" class="org.scalastyle.scalariform.DeprecatedJavaChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.EmptyClassChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.RedundantIfChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.MultipleStringLiteralsChecker" enabled="false"/>
+ <check level="error" class="org.scalastyle.scalariform.SpaceAfterCommentStartChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.ProcedureDeclarationChecker" enabled="true"/>
+ <check level="error" class="org.scalastyle.scalariform.NotImplementedErrorUsage" enabled="true"/>
+</scalastyle>
diff --git a/src/main/scala/CodegenPlugin.scala b/src/main/scala/CodegenPlugin.scala
index 6217695..94712c2 100644
--- a/src/main/scala/CodegenPlugin.scala
+++ b/src/main/scala/CodegenPlugin.scala
@@ -18,20 +18,19 @@ object CodegenPlugin extends AutoPlugin {
* @param foreignKeys foreign key references to data models add manually
*/
case class CodegenDatabase(
- databaseURI: String,
- outputPackage: String,
- outputPath: String,
- schemaWhitelist: List[String] = List.empty,
- foreignKeys: Map[TableColumn, TableColumn] = Map.empty
+ databaseURI: String,
+ outputPackage: String,
+ outputPath: String,
+ schemaWhitelist: List[String] = List.empty,
+ foreignKeys: Map[TableColumn, TableColumn] = Map.empty
)
lazy val codegenDatabaseConfigs = SettingKey[List[CodegenDatabase]](
"codegen-database-configs",
"configurations for each database and its generated code")
- lazy val codegenSchemaBaseClassParts = SettingKey[List[String]](
- "codegen-schema-base-class-parts",
- "parts inherited by each generated schema object")
+ lazy val codegenSchemaBaseClassParts =
+ SettingKey[List[String]]("codegen-schema-base-class-parts", "parts inherited by each generated schema object")
lazy val codegenIdType = SettingKey[Option[String]](
"codegen-id-type",
"The in-scope type `T` of kind `T[TableRow]` to apply in place T for id columns"
@@ -76,10 +75,11 @@ object CodegenPlugin extends AutoPlugin {
config.outputPath,
config.foreignKeys, {
val parts =
- (if (codegenIdType.value.isEmpty)
+ (if (codegenIdType.value.isEmpty) {
codegenSchemaBaseClassParts.value :+ "DefaultIdTypeMapper"
- else
- codegenSchemaBaseClassParts.value)
+ } else {
+ codegenSchemaBaseClassParts.value
+ })
Some(parts).filter(_.nonEmpty).map(_.mkString(" with "))
},
diff --git a/src/main/scala/Generators.scala b/src/main/scala/Generators.scala
index b7b499e..ae410fb 100644
--- a/src/main/scala/Generators.scala
+++ b/src/main/scala/Generators.scala
@@ -1,21 +1,20 @@
import slick.{model => m}
class RowSourceCodeGenerator(
- model: m.Model,
- override val headerComment: String,
- override val imports: String,
- override val schemaName: String,
- fullDatabaseModel: m.Model,
- idType: Option[String],
- manualForeignKeys: Map[(String, String), (String, String)],
- typeReplacements: Map[String, String]
+ model: m.Model,
+ override val headerComment: String,
+ override val imports: String,
+ override val schemaName: String,
+ fullDatabaseModel: m.Model,
+ idType: Option[String],
+ manualForeignKeys: Map[(String, String), (String, String)],
+ typeReplacements: Map[String, String]
) extends TypedIdSourceCodeGenerator(
singleSchemaModel = model,
databaseModel = fullDatabaseModel,
idType,
manualForeignKeys
- )
- with RowOutputHelpers {
+ ) with RowOutputHelpers {
override def Table = new TypedIdTable(_) { table =>
@@ -36,22 +35,20 @@ class RowSourceCodeGenerator(
override def code = tables.map(_.code.mkString("\n")).mkString("\n\n")
}
-class TableSourceCodeGenerator(
- schemaOnlyModel: m.Model,
- override val headerComment: String,
- override val imports: String,
- override val schemaName: String,
- fullDatabaseModel: m.Model,
- pkg: String,
- manualForeignKeys: Map[(String, String), (String, String)],
- override val parentType: Option[String],
- idType: Option[String],
- typeReplacements: Map[String, String])
+class TableSourceCodeGenerator(schemaOnlyModel: m.Model,
+ override val headerComment: String,
+ override val imports: String,
+ override val schemaName: String,
+ fullDatabaseModel: m.Model,
+ pkg: String,
+ manualForeignKeys: Map[(String, String), (String, String)],
+ override val parentType: Option[String],
+ idType: Option[String],
+ typeReplacements: Map[String, String])
extends TypedIdSourceCodeGenerator(singleSchemaModel = schemaOnlyModel,
databaseModel = fullDatabaseModel,
idType,
- manualForeignKeys)
- with TableOutputHelpers {
+ manualForeignKeys) with TableOutputHelpers {
val defaultIdImplementation =
"""|final case class Id[T](v: Int)
@@ -71,14 +68,14 @@ class TableSourceCodeGenerator(
val tripleQuote = "\"\"\""
val namespaceDDL =
s"""|val createNamespaceSchema = {
- | implicit val GRUnit = slick.jdbc.GetResult(_ => ())
- | sql${tripleQuote}CREATE SCHEMA IF NOT EXISTS "$schemaName";${tripleQuote}.as[Unit]
- |}
- |
- |val dropNamespaceSchema = {
- | implicit val GRUnit = slick.jdbc.GetResult(_ => ())
- | sql${tripleQuote}DROP SCHEMA "$schemaName" CASCADE;${tripleQuote}.as[Unit]
- |} """
+ | implicit val GRUnit = slick.jdbc.GetResult(_ => ())
+ | sql${tripleQuote}CREATE SCHEMA IF NOT EXISTS "$schemaName";${tripleQuote}.as[Unit]
+ |}
+ |
+ |val dropNamespaceSchema = {
+ | implicit val GRUnit = slick.jdbc.GetResult(_ => ())
+ | sql${tripleQuote}DROP SCHEMA "$schemaName" CASCADE;${tripleQuote}.as[Unit]
+ |} """
tableCode + "\n\n" + namespaceDDL
}
@@ -99,21 +96,23 @@ class TableSourceCodeGenerator(
override def factory: String =
if (!hlistEnabled) super.factory
else {
- val args = columns.zipWithIndex.map("a" + _._2)
+ val args = columns.zipWithIndex.map("a" + _._2)
val hlist = args.mkString("::") + ":: HNil"
val hlistType = columns
- .map(_.actualType)
- .mkString("::") + ":: HNil.type"
+ .map(_.actualType)
+ .mkString("::") + ":: HNil.type"
s"((h : $hlistType) => h match {case $hlist => ${TableClass.elementType}(${args.mkString(",")})})"
}
// from case class create columns
override def extractor: String =
- if (!hlistEnabled) super.extractor
- else
+ if (!hlistEnabled) {
+ super.extractor
+ } else {
s"(a : ${TableClass.elementType}) => Some(" + columns
.map("a." + _.name)
.mkString("::") + ":: HNil)"
+ }
override def EntityType = new EntityType {
override def enabled = false
@@ -129,22 +128,22 @@ class TableSourceCodeGenerator(
override def code = {
val fkColumns = compoundValue(referencingColumns.map(_.name))
val qualifier =
- if (referencedTable.model.name.schema == referencingTable.model.name.schema)
+ if (referencedTable.model.name.schema == referencingTable.model.name.schema) {
""
- else
- referencedTable.model.name.schema.fold("")(sname =>
- s"$pkg.$sname.")
+ } else {
+ referencedTable.model.name.schema.fold("")(sname => s"$pkg.$sname.")
+ }
val qualifiedName = qualifier + referencedTable.TableValue.name
val pkColumns = compoundValue(referencedColumns.map(c =>
s"r.${c.name}${if (!c.model.nullable && referencingColumns.forall(_.model.nullable)) ".?"
else ""}"))
val fkName = referencingColumns
- .map(_.name)
- .flatMap(_.split("_"))
- .map(_.capitalize)
- .mkString
- .uncapitalize + "Fk"
+ .map(_.name)
+ .flatMap(_.split("_"))
+ .map(_.capitalize)
+ .mkString
+ .uncapitalize + "Fk"
s"""lazy val $fkName = foreignKey("$dbName", $fkColumns, $qualifiedName)(r => $pkColumns, onUpdate=$onUpdate, onDelete=$onDelete)"""
}
}
diff --git a/src/main/scala/Main.scala b/src/main/scala/Main.scala
index 7f0374c..2a4624f 100644
--- a/src/main/scala/Main.scala
+++ b/src/main/scala/Main.scala
@@ -7,10 +7,7 @@ import slick.codegen.SourceCodeGenerator
import slick.jdbc.JdbcProfile
trait TableFileGenerator { self: SourceCodeGenerator =>
- def writeTablesToFile(profile: String,
- folder: String,
- pkg: String,
- fileName: String): Unit
+ def writeTablesToFile(profile: String, folder: String, pkg: String, fileName: String): Unit
}
trait RowFileGenerator { self: SourceCodeGenerator =>
@@ -31,9 +28,7 @@ object Generator {
folder: String,
pkg: String,
fileName = s"${camelSchemaName}Tables.scala")
- rowGen.writeRowsToFile(folder: String,
- pkg: String,
- fileName = s"${camelSchemaName}Rows.scala")
+ rowGen.writeRowsToFile(folder: String, pkg: String, fileName = s"${camelSchemaName}Rows.scala")
}
def run(uri: URI,
@@ -55,10 +50,8 @@ object Generator {
def importStatements(imports: List[String]) = imports.map("import " + _).mkString("\n")
try {
- val dbModel: slick.model.Model = Await.result(
- dc.db.run(
- ModelTransformation.createModel(dc.profile, parsedSchemasOpt)),
- Duration.Inf)
+ val dbModel: slick.model.Model =
+ Await.result(dc.db.run(ModelTransformation.createModel(dc.profile, parsedSchemasOpt)), Duration.Inf)
parsedSchemasOpt.getOrElse(Map.empty).foreach {
case (schemaName, tables) =>
@@ -66,10 +59,9 @@ object Generator {
s"""slick.backend.DatabaseConfig.forConfig[slick.driver.JdbcProfile]("${uri
.getFragment()}").driver"""
- val schemaOnlyModel = Await.result(
- dc.db.run(ModelTransformation
- .createModel(dc.profile, Some(Map(schemaName -> tables)))),
- Duration.Inf)
+ val schemaOnlyModel = Await.result(dc.db.run(ModelTransformation
+ .createModel(dc.profile, Some(Map(schemaName -> tables)))),
+ Duration.Inf)
val rowGenerator = new RowSourceCodeGenerator(
model = schemaOnlyModel,
@@ -83,16 +75,18 @@ object Generator {
)
val tableGenerator =
- new TableSourceCodeGenerator(schemaOnlyModel = schemaOnlyModel,
- headerComment = header,
- imports = importStatements(tablesFileImports),
- schemaName = schemaName,
- fullDatabaseModel = dbModel,
- pkg = pkg,
- manualForeignKeys,
- parentType = parentType,
- idType,
- typeReplacements)
+ new TableSourceCodeGenerator(
+ schemaOnlyModel = schemaOnlyModel,
+ headerComment = header,
+ imports = importStatements(tablesFileImports),
+ schemaName = schemaName,
+ fullDatabaseModel = dbModel,
+ pkg = pkg,
+ manualForeignKeys,
+ parentType = parentType,
+ idType,
+ typeReplacements
+ )
outputSchemaCode(schemaName = schemaName,
profile = profile,
diff --git a/src/main/scala/OutputHelpers.scala b/src/main/scala/OutputHelpers.scala
index 97fb4e9..17c2019 100644
--- a/src/main/scala/OutputHelpers.scala
+++ b/src/main/scala/OutputHelpers.scala
@@ -1,7 +1,6 @@
import slick.codegen.{SourceCodeGenerator, OutputHelpers}
-trait TableOutputHelpers extends TableFileGenerator with OutputHelpers {
- self: SourceCodeGenerator =>
+trait TableOutputHelpers extends TableFileGenerator with OutputHelpers { self: SourceCodeGenerator =>
def headerComment: String
def schemaName: String
@@ -31,30 +30,21 @@ trait TableOutputHelpers extends TableFileGenerator with OutputHelpers {
|}
|""".stripMargin.trim()
- def writeTablesToFile(profile: String,
- folder: String,
- pkg: String,
- fileName: String): Unit = {
- writeStringToFile(
- content =
- packageTableCode(headerComment, pkg, schemaName, imports, profile),
- folder = folder,
- pkg = s"$pkg.$schemaName",
- fileName = fileName)
+ def writeTablesToFile(profile: String, folder: String, pkg: String, fileName: String): Unit = {
+ writeStringToFile(content = packageTableCode(headerComment, pkg, schemaName, imports, profile),
+ folder = folder,
+ pkg = s"$pkg.$schemaName",
+ fileName = fileName)
}
}
-trait RowOutputHelpers extends RowFileGenerator with OutputHelpers {
- self: SourceCodeGenerator =>
+trait RowOutputHelpers extends RowFileGenerator with OutputHelpers { self: SourceCodeGenerator =>
def headerComment: String
def schemaName: String
def imports: String
- def packageRowCode(headerComment: String,
- schemaName: String,
- pkg: String,
- imports: String): String =
+ def packageRowCode(headerComment: String, schemaName: String, pkg: String, imports: String): String =
s"""|${headerComment.trim().lines.map("// " + _).mkString("\n")}
|/** Definitions for table rows types of database schema $schemaName */
|package $pkg
@@ -67,10 +57,9 @@ trait RowOutputHelpers extends RowFileGenerator with OutputHelpers {
def writeRowsToFile(folder: String, pkg: String, fileName: String): Unit = {
- writeStringToFile(
- content = packageRowCode(headerComment, schemaName, pkg, imports),
- folder = folder,
- pkg = s"$pkg.$schemaName",
- fileName = fileName)
+ writeStringToFile(content = packageRowCode(headerComment, schemaName, pkg, imports),
+ folder = folder,
+ pkg = s"$pkg.$schemaName",
+ fileName = fileName)
}
}
diff --git a/src/main/scala/SchemaParser.scala b/src/main/scala/SchemaParser.scala
index 85fffaf..bf555c3 100644
--- a/src/main/scala/SchemaParser.scala
+++ b/src/main/scala/SchemaParser.scala
@@ -14,14 +14,13 @@ object ModelTransformation {
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
+ case _: Length => false
+ case _ => true
})
} else column))))
def references(dbModel: m.Model,
- tcMappings: Map[(String, String), (String, String)])
- : Map[(String, String), (m.Table, m.Column)] = {
+ tcMappings: Map[(String, String), (String, String)]): Map[(String, String), (m.Table, m.Column)] = {
def getTableColumn(tc: (String, String)): (m.Table, m.Column) = {
val (tableName, columnName) = tc
val table = dbModel.tables
@@ -29,8 +28,7 @@ object ModelTransformation {
.getOrElse(throw new RuntimeException("No table " + tableName))
val column = table.columns
.find(_.name == columnName)
- .getOrElse(throw new RuntimeException(
- "No column " + columnName + " in table " + tableName))
+ .getOrElse(throw new RuntimeException("No column " + columnName + " in table " + tableName))
(table, column)
}
@@ -39,16 +37,13 @@ object ModelTransformation {
}
}
- def parseSchemaList(
- schemaTableNames: List[String]): Map[String, List[String]] =
+ def parseSchemaList(schemaTableNames: List[String]): Map[String, List[String]] =
schemaTableNames
.map(_.split('.'))
.groupBy(_.head)
.mapValues(_.flatMap(_.tail))
- def createModel(
- jdbcProfile: JdbcProfile,
- mappedSchemasOpt: Option[Map[String, List[String]]]): DBIO[m.Model] = {
+ def createModel(jdbcProfile: JdbcProfile, mappedSchemasOpt: Option[Map[String, List[String]]]): DBIO[m.Model] = {
import slick.jdbc.meta.MQName
val filteredTables = mappedSchemasOpt.map { mappedSchemas =>
@@ -61,7 +56,7 @@ object ModelTransformation {
.find(table =>
table.name match {
case MQName(_, Some(`schemaName`), `tableName`) => true
- case _ => false
+ case _ => false
})
.getOrElse(throw new IllegalArgumentException(
s"$schemaName.$tableName does not exist in the connected database.")))
diff --git a/src/main/scala/TypedIdTable.scala b/src/main/scala/TypedIdTable.scala
index ad62032..ead4a49 100644
--- a/src/main/scala/TypedIdTable.scala
+++ b/src/main/scala/TypedIdTable.scala
@@ -2,19 +2,19 @@ import slick.codegen.SourceCodeGenerator
import slick.{model => m}
class TypedIdSourceCodeGenerator(
- singleSchemaModel: m.Model,
- databaseModel: m.Model,
- idType: Option[String],
- manualForeignKeys: Map[(String, String), (String, String)]
+ singleSchemaModel: m.Model,
+ databaseModel: m.Model,
+ idType: Option[String],
+ manualForeignKeys: Map[(String, String), (String, String)]
) extends SourceCodeGenerator(singleSchemaModel) {
val manualReferences =
ModelTransformation.references(databaseModel, manualForeignKeys)
val modelTypeToColumnMaper = Map(
"java.util.UUID" -> "uuidKeyMapper",
- "String" -> "naturalKeyMapper",
- "Int" -> "serialKeyMapper",
- "Long" -> "serialKeyMapper"
+ "String" -> "naturalKeyMapper",
+ "Int" -> "serialKeyMapper",
+ "Long" -> "serialKeyMapper"
)
val keyReferences: Map[m.Column, m.Column] = {
@@ -26,18 +26,15 @@ class TypedIdSourceCodeGenerator(
val fks: Seq[(m.Column, m.Column)] = databaseModel.tables
.flatMap(_.foreignKeys)
.filter(_.referencedColumns.length == 1)
- .filter(_.referencedColumns.forall(
- _.options.contains(slick.ast.ColumnOption.PrimaryKey)))
- .flatMap(fk =>
- fk.referencingColumns.flatMap(from =>
- fk.referencedColumns.headOption.map(to => (from -> to))))
+ .filter(_.referencedColumns.forall(_.options.contains(slick.ast.ColumnOption.PrimaryKey)))
+ .flatMap(fk => fk.referencingColumns.flatMap(from => fk.referencedColumns.headOption.map(to => (from -> to))))
(pks ++ fks).toMap
}
def pKeyTypeTag(columnRef: m.Column): String = {
val schemaName = columnRef.table.schema.getOrElse("`public`")
- val tableName = entityName(columnRef.table.table)
+ val tableName = entityName(columnRef.table.table)
s"$schemaName.$tableName"
}
@@ -47,11 +44,7 @@ class TypedIdSourceCodeGenerator(
class TypedIdTable(model: m.Table) extends Table(model) { table =>
override def definitions =
- Seq[Def](EntityType,
- PlainSqlMapper,
- TableClass,
- TableValue,
- PrimaryKeyMapper)
+ Seq[Def](EntityType, PlainSqlMapper, TableClass, TableValue, PrimaryKeyMapper)
class TypedIdColumn(override val model: m.Column) extends Column(model) {
override def rawType: String = {
@@ -80,9 +73,8 @@ class TypedIdSourceCodeGenerator(
override def code = primaryKeyColumn.fold("") { column =>
val tpe = s"BaseColumnType[${column.rawType}]"
- s"""|implicit def $name: $tpe =
- |${modelTypeToColumnMaper(column.model.tpe)}[${pKeyTypeTag(
- column.model)}]
+ s"""|implicit def $name: $tpe =
+ |${modelTypeToColumnMaper(column.model.tpe)}[${pKeyTypeTag(column.model)}]
|""".stripMargin.lines.mkString("").trim
}
}