aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/Generators.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/Generators.scala')
-rw-r--r--src/main/scala/Generators.scala89
1 files changed, 44 insertions, 45 deletions
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)"""
}
}