Posted at

play-slickを使ってslick-joda-mapperのimportからRDBMS依存の記述をなくす

More than 5 years have passed since last update.

slick-joda-mapperはSlickでjoda-timeを使うときに型の変換をいい感じにしてくれる便利なライブラリなのですが一点だけ難点があります。

それはRDBMSのドライバーごとにimportが必要なところです。

import com.github.tototoshi.slick.H2JodaSupport._       // H2を使う場合

import com.github.tototoshi.slick.PostgresJodaSupport._ // Postgresを使う場合
import com.github.tototoshi.slick.MySQLJodaSupport._ // MySQLを使う場合
...
etc

ソースコード中に使用するドライバーを直がきしないといけなくなるため、特定のRDBMSに依存させたくないプロダクトをつくってるときに困ります。

それがplay-slickの仕組みを使うとこんな感じで書けるようになります。

object MyDriver extends slick.GenericJodaSupport(play.api.db.slick.Config.driver)

import MyDriver._

こんなふうに play.api.db.slick.Config.driver としてドライバーを持ってきてあげると

application.confに書かれたドライバーの設定からいい感じに処理してくれます。

おそらくplay-slick使わずともPlay.Currentから持ってくることもできると思いますがPlayでSlickをplay-slickなしで使うことも少ないでしょう。

最近、Play framework + AngularJS(with TypeScript)でリアルタイムコミュニケーションツールをちょこちょこ作ってて気付いた話でした。

https://github.com/phantomtype/Phantasm