val outputDir = sourceManaged.value / "slick"
val pkg = "model"
val (url, user, pwd) = Conf.dbConf.value
val jdbcDriver = "com.mysql.jdbc.Driver"
val slickDriver = "slick.driver.MySQLDriver"
val driver = slick.driver.MySQLDriver
val dbFactory = driver.api.Database
val db = dbFactory.forURL(url, driver = jdbcDriver, user = user, password = pwd)
val excludedTables = Seq("schema_version")
val tables =
driver.defaultTables
.map(_.filterNot(excludedTables contains _.name.name))
val modelAction = driver.createModel(Some(tables), ignoreInvalidDefaults = true).withPinnedSession
val modelFuture = db.run(modelAction)
val codegenFuture = modelFuture.map(model => new SourceCodeGenerator(model) {
})
codegenFuture.onSuccess { case codegen =>
codegen.writeToFile(
slickDriver,outputDir.getPath, pkg, "SlickTableDefs", "TableDefs.scala"
)
}