Slickでモデルを作成すると、モデルからテーブルを生成することができる。
これが、コード上から生成になるので、起動のたびにテーブルを作られたり、ドロップされても困るので、作成対象のテーブルの有無を確認して実行を決める必要がある。
ルートパッケージにGlobalオブジェクト作成、onStartメソッドをオーバライドすることで、アプリ起動時に処理を実行することができる。
そこで、MTableオブジェクトのgetTablesメソッドを使用して対象のテーブルの存在をチェックしてテーブル作成を実行させてみた。
import models.Users
import play.api.db.DB
import play.api._
import scala.slick.driver.MySQLDriver.simple._
import play.api.Play.current
import scala.slick.jdbc.meta._
object Global extends GlobalSettings {
override def onStart(app: Application) {
val ds = Database.forDataSource(DB.getDataSource())
ds.withSession{ implicit session: Session =>
if (MTable.getTables ("user") .list.isEmpty)
Users.ddl.create
}
}
}
0 件のコメント:
コメントを投稿