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.