¿Cómo usar el generador de códigos Slick para incluir también vistas de bases de datos?
Estoy tratando de generar el código Scala para las tablas y vistas de la base de datos en mi esquema usando Slick 3.0.3. Tomandoeste blog como ejemplo tengo el siguiente archivobuild.sbt
. Sin embargo, esto generará código para las tablas de mi base de datos y no incluirá las vistas de la base de datos. ¿Cómo puedo obtener las vistas generadas también?
De acuerdo acuestión hábil 1022 Veo que es posible hacerlo, pero la API no se parece yslick.codegen.SourceCodeGenerator
no tiene ungetTables
odefaultTables
para incluir nombres de vista.
name := "slickCodeGen"
version := "1.0"
scalaVersion := "2.11.6"
scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")
libraryDependencies ++= Seq(
"com.typesafe.slick" %% "slick" % "3.0.3",
"com.typesafe.slick" %% "slick-codegen" % "3.0.3",
"org.postgresql" % "postgresql" % "9.4-1201-jdbc41",
"com.zaxxer" % "HikariCP" % "2.3.2",
"org.scalatest" %% "scalatest" % "2.2.4" % "test"
)
slick <<= slickCodeGenTask
sourceGenerators in Compile <+= slickCodeGenTask
lazy val slick = TaskKey[Seq[File]]("gen-tables")
lazy val slickCodeGenTask = (sourceManaged, dependencyClasspath in Compile, runner in Compile, streams) map { (dir, cp, r, s) =>
val outputDir = (dir / "main/slick").getPath
val username = "postgres"
val password = "xxx"
val url = "jdbc:postgresql://localhost:5555/testdb?searchpath=public"
val jdbcDriver = "com.postgresql.jdbc.Driver"
val slickDriver = "slick.driver.PostgresDriver"
val pkg = "folder1.folder2"
toError(r.run("slick.codegen.SourceCodeGenerator", cp.files, Array(slickDriver, jdbcDriver, url, outputDir, pkg, username, password), s.log))
val fname = outputDir + "/folder1/folder2/" + "Tables.scala"
Seq(file(fname))
}