Playframework2.4 + Slick3.0で複数のデータベースに接続する
@NamedDatabaseアノテーションをつければ対応するDB名のDatabaseConfigProviderをDIしてくれます*1が、
なんとなくDatabaseConfigProviderをDIしたくないなってことで、別の方法で実装してみた。
どちらにしてもPlay.currentに依存してるのであまり意味ないなと。。。
リポジトリは以下のようにDB名をDIする形。
DB名はモジュールを作ってDIする。
テスト時はテスト用のモジュールに入れ替えて、適当にインメモリのDBで済ませる。
テスト用のDB設定は設定ファイルでなく、Slick用のインメモリDB設定を作るヘルパーメソッドを用意しておくとテストケースごとにランダムなDBを利用できて良さそう。
build.sbtのjavaOptionsで、テスト時にテスト用の設定ファイルを読み込む設定を忘れずに。
設定ファイルは他の設定ファイルをincludeできるので、DB設定やモジュール設定等で分割して管理したほうがいろいろと捗る感じがします。
Enjoy!