play.api.db.slick.Config.driver.simple の正体
イシュー
- slick で「import play.api.db.slick.Config.driver.simple._ 」しているが、これのコードを知りたい
参考
- play-slick/samples/play-slick-json-sample/app/controllers/Application.scala at master · freekh/play-slick · GitHub
- play-slick/code/src/main/scala/play/api/db/slick/Config.scala at master · freekh/play-slick · GitHub
- ScalaSlickTables · freekh/play-slick Wiki · GitHub
- ScalaSlickDrivers · freekh/play-slick Wiki · GitHub
scalaのパッケージ文法
- scalaのパッケージ宣言は、クラス以外に、ブロック内のコード、関数もパッケージになる。
object Config extends Config {
def app = play.api.Play.current
lazy val driver: JdbcDriver = driver()(app)
}
- play-slick/code/src/main/scala/play/api/db/slick/Config.scala at master · freekh/play-slick · GitHub
- パッケージ:package play.api.db.slick
- オブジェクト:object Config extends Config {
- 関数:lazy val driver: JdbcDriver = driver()(app)
参考
driver関数の型は、「scala.slick.driver.JdbcDriver」
- JdbcDriver traitに、simple っていう関数がある。
- simple ていう関数の型が SimpleQLっていう trait
A collection of values for using the query language with a single import statement. This provides the driver's implicits, the Database and Session objects for DB connections, and commonly used query language types and objects.
参考
結論
- play.api.db.slick.Config.driver.simple の正体は、scala.slick.profile.RelationalProfile.SimpleQL というtraitであり、このtraitのメソッド(Table, Columnなど)を使用することができる。
参考
- Slick 2.0.1
- SimpleQL