Slick 3.1.1 Codegen para visualiza√ß√Ķes

Slick 3.1.1 tem algumas ferramentas bastante boas para gerar seu c√≥digo ddl e esquema a partir de um banco de dados j√° existente. Uma coisa que √© um pouco complicada √© quando voc√™ tem alguns tipos de campo muito espec√≠ficos de banco de dados em seu banco de dados ou deseja que o slick trabalhe sobre as visualiza√ß√Ķes.

Para fazer isso, voc√™ deve confiar em MTables(m para meta), para obter tabelas e visualiza√ß√Ķes imediatamente.

import slick.codegen.SourceCodeGenerator
import slick.driver.PostgresDriver
import slick.driver.PostgresDriver.api._
import scala.concurrent.Await
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration._
import slick.jdbc.meta._

object CreateModel extends App {

override def main(args: Array[String]) {
// fetch data model
String dbConfig = "your_db_config" //in application.conf
val db
= Database.forConfig(dbConfig)
val tablesAndViews
= MTable.getTables(None, None, None, Some(Seq("TABLE", "VIEW"))) //TABLE, and VIEW represent metadata, i.e. get database objects which are tables and views
val modelAction
= PostgresDriver.createModel(Some(tablesAndViews))
val modelFuture
= db.run(modelAction) //slick has drivers and extensions for a number of dbs including mysql, MSSQL, H2 and Oracle

// customize code generator
val codegenFuture
= modelFuture.map(model => new SourceCodeGenerator(model))

val path
= getClass.getResource("").getPath

Await.ready(
codegenFuture
.map(_.writeToFile("slick.driver.PostgresDriver", path, "dal", "Tables", "Tables.scala")), 20 seconds)
}

}

Como est√°, ele √© executado como um programa aut√īnomo, existe a possibilidade de integra√ß√£o sbt para rodar em compila√ß√£o, por exemplo, que requer um pouco mais de refinamento. Veja a documenta√ß√£o (link acima) para mais.