diff options
author | Stewart Stewart <stewinsalot@gmail.com> | 2017-02-24 04:27:42 -0500 |
---|---|---|
committer | Stewart Stewart <stewinsalot@gmail.com> | 2017-02-24 04:27:42 -0500 |
commit | 4458e2e22b2a170dc92e7315224020562a60e2ee (patch) | |
tree | 2c38723c94b201d35ca37d1a26558dee56bd993e /src/main/scala | |
parent | 3a9d4366d7eda68145aaafc35619cf3e9c1a4d30 (diff) | |
download | slick-codegen-plugin-4458e2e22b2a170dc92e7315224020562a60e2ee.tar.gz slick-codegen-plugin-4458e2e22b2a170dc92e7315224020562a60e2ee.tar.bz2 slick-codegen-plugin-4458e2e22b2a170dc92e7315224020562a60e2ee.zip |
flesh out OutputHelper structure
Diffstat (limited to 'src/main/scala')
-rw-r--r-- | src/main/scala/OutputHelpers.scala | 73 |
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) } } |