aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStewart Stewart <stewinsalot@gmail.com>2017-02-24 04:27:42 -0500
committerStewart Stewart <stewinsalot@gmail.com>2017-02-24 04:27:42 -0500
commit4458e2e22b2a170dc92e7315224020562a60e2ee (patch)
tree2c38723c94b201d35ca37d1a26558dee56bd993e
parent3a9d4366d7eda68145aaafc35619cf3e9c1a4d30 (diff)
downloadslick-codegen-plugin-4458e2e22b2a170dc92e7315224020562a60e2ee.tar.gz
slick-codegen-plugin-4458e2e22b2a170dc92e7315224020562a60e2ee.tar.bz2
slick-codegen-plugin-4458e2e22b2a170dc92e7315224020562a60e2ee.zip
flesh out OutputHelper structure
-rw-r--r--src/main/scala/OutputHelpers.scala73
1 files changed, 41 insertions, 32 deletions
diff --git a/src/main/scala/OutputHelpers.scala b/src/main/scala/OutputHelpers.scala
index 2a3641e..c3c5e0d 100644
--- a/src/main/scala/OutputHelpers.scala
+++ b/src/main/scala/OutputHelpers.scala
@@ -29,7 +29,7 @@ trait OOutputHelpers extends slick.codegen.OutputHelpers {
import slick.codegen.{SourceCodeGenerator, OutputHelpers}
trait TableFileGenerator { self: SourceCodeGenerator =>
- def writeTablesToFile(folder:String, pkg: String, fileName: String): Unit
+ def writeTablesToFile(profile: String, folder:String, pkg: String, fileName: String): Unit
}
trait RowFileGenerator { self: SourceCodeGenerator =>
@@ -39,44 +39,53 @@ trait RowFileGenerator { self: SourceCodeGenerator =>
// Dirty work to hide OutputHelpers
trait TableOutputHelpers extends TableFileGenerator with OutputHelpers { self: SourceCodeGenerator =>
- def packageTableCode: String =
- """|${headerComment.trim().lines.map("// " + _).mkString("\n")}
- |package $pkg
- |package $schemaName
- |
- |$imports
- |
- |/** Stand-alone Slick data model for immediate use */
- |// TODO: change this to `object tables`
- |package object $schemaName extends {
- | val profile = $profile
- |} with Tables
- |
- |/** Slick data model trait for extension, choice of backend or usage in the cake pattern. (Make sure to initialize this late.) */
- |trait Tables${parentType.fold("")(" extends " + _)} {
- | import profile.api._
- | ${indent(code)} |
- |""".stripMargin.trim()
+ def headerComment: String
+ def schemaName: String
+ def imports: String
+
+ def packageTableCode(headerComment: String, pkg: String, schemaName: String, imports: String, profile: String): String =
+ s"""|${headerComment.trim().lines.map("// " + _).mkString("\n")}
+ |package $pkg
+ |package $schemaName
+ |
+ |$imports
+ |
+ |/** Stand-alone Slick data model for immediate use */
+ |// TODO: change this to `object tables`
+ |package object $schemaName extends {
+ | val profile = $profile
+ |} with Tables
+ |
+ |/** Slick data model trait for extension, choice of backend or usage in the cake pattern. (Make sure to initialize this late.) */
+ |trait Tables${parentType.fold("")(" extends " + _)} {
+ | import profile.api._
+ | ${indent(code)} |
+ |""".stripMargin.trim()
- def writeTablesToFile(folder:String, pkg: String, fileName: String): Unit = {
- writeStringToFile(content = packageTableCode, folder = folder, pkg = pkg, 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 =>
- def packageRowCode: String =
- """|${headerComment.trim().lines.map("// " + _).mkString("\n")}
- |/** Definitions for table rows types of database schema $schemaName */
- |package $pkg
- |package $schemaName
- |
- |$imports
- |
- |$code
- |""".stripMargin.trim()
+ def headerComment: String
+ def schemaName: String
+ def imports: 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
+ |package $schemaName
+ |
+ |$imports
+ |
+ |$code
+ |""".stripMargin.trim()
def writeRowsToFile(folder:String, pkg: String, fileName: String): Unit = {
- writeStringToFile(content = packageRowCode, folder = folder, pkg = pkg, fileName = fileName)
+
+ writeStringToFile(content = packageRowCode(headerComment, schemaName, pkg, imports), folder = folder, pkg = s"$pkg.$schemaName", fileName = fileName)
}
}