Skip to content

Instantly share code, notes, and snippets.

@fdz5
Created January 2, 2014 20:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fdz5/8226038 to your computer and use it in GitHub Desktop.
Save fdz5/8226038 to your computer and use it in GitHub Desktop.
package sbt
import scala.slick.model.codegen.SourceCodeGenerator
import scala.slick.model.Model
/**
*
*
* User: filip
* Date: 01.01.14
* Time: 14:42
*/
object CustomSourceCodeGenerator {
import scala.slick.driver.JdbcProfile
import scala.reflect.runtime.currentMirror
def main(args: Array[String]) = {
args.toList match {
case List(slickDriver, jdbcDriver, url, outputFolder, pkg, user, password) => {
val driver: JdbcProfile = {
val module = currentMirror.staticModule(slickDriver)
val reflectedModule = currentMirror.reflectModule(module)
val driver = reflectedModule.instance.asInstanceOf[JdbcProfile]
driver
}
driver.simple.Database
.forURL(url, driver = jdbcDriver, user = user, password = password)
.withSession {
implicit session =>
(new SourceCodeGenerator(driver.createModel)).writeToFile(slickDriver, outputFolder, pkg)
}
}
case _ => {
println( """
Usage: SourceCodeGenerator.main(Array( slickDriver, jdbcDriver, url, outputFolder, pkg ))
slickDriver: Fully qualified name of Slick driver class, e.g. "scala.slick.driver.H2Driver"
jdbcDriver: Fully qualified name of jdbc driver class, e.g. "org.h2.Driver"
url: jdbc url, e.g. "jdbc:postgresql://localhost/test"
outputFolder: Place where the package folder structure should be put
pkg: Scala package the generated code should be places in
""".trim
)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment