score:0

the below one generated slick code for tables from the selected schema:

object customcodegenerator extends  app {
  val url = "jdbc:oracle:thin:@//localhost:1521/xe"
  val jdbcdriver = "oracle.jdbc.oracledriver"
  val username = "user"
  val password = "password"
  val db = oracledriver.api.database.forurl(url, user = username, password = password, driver = jdbcdriver)

  // filter out desired tables
  val requiredtables = seq("br_fld", "fld_gm_sdo", "br_rep", "plt_gm_sdo")
  // filter out desired schema
  val requiredschema = seq("plot")
  val codegen = db.run {
    oracledriver.defaulttables
      .map(_.filter(p => requiredtables.contains(p.name.name.tolowercase) && requiredschema.contains(p.name.schema.get.tolowercase)))
      .flatmap(oracledriver.createmodelbuilder(_, false).buildmodel)
  }
    .map { model =>
      new slick.codegen.sourcecodegenerator(model) {
        override def entityname = dbtablename => dbtablename match {
          case _ => super.entityname(dbtablename)
        }
      }
    }

  await.ready(
    codegen.map(_.writetofile(
      "com.typesafe.slick.driver.oracle.oracledriver", ".", "demo", "tables", "tables.scala")),
    300.seconds
  ).oncomplete {
    case success(value) => println("code generation done")
    case failure(e) => e.printstacktrace
  }
}

Related Query

More Query from same tag