【发布时间】:2018-11-23 23:23:40
【问题描述】:
我有一个应用程序,这些是堆栈
- 播放 2.6
- 吉斯
- 玩 Slick 3.0.0
我正在尝试根据请求参数动态查询不同的数据库。
例如在application.conf
slick.dbs.default.profile = "slick.jdbc.H2Profile$"
slick.dbs.default.db.driver="org.h2.Driver"
slick.dbs.default.db.url="jdbc:h2:mem:test;MODE=MYSQL;DATABASE_TO_UPPER=false;DB_CLOSE_DELAY=-1;"
play.evolutions.db.default.enabled = true
slick.dbs.mydb2.profile = "slick.jdbc.H2Profile$"
slick.dbs.mydb2.db.driver="org.h2.Driver"
slick.dbs.mydb2.db.url="jdbc:h2:mem:test;MODE=MYSQL;DATABASE_TO_UPPER=false;DB_CLOSE_DELAY=-1;"
play.evolutions.db.mydb2.enabled = true
存储库
@Singleton
class UserRepositoryImpl @Inject() (@NamedDatabase("mydb2") dbConfigProvider: DatabaseConfigProvider)
(implicit ec: ExecutionContext) extends UserRepository {
val dbConfig = dbConfigProvider.get[JdbcProfile]
import dbConfig._
import profile.api._
override def all: EitherT[Future, String, Seq[User]] = EitherT {
db.run(UserTable.UserQuery.result.asTry).map {
case Success(result) => {
logger.debug(s"all success: $result")
Right(result)
}
case Failure(error) => {
val str = s"all error: ${error.getMessage}"
logger.error(str, error)
Left(str)
}
}
}
}
有没有办法为每个请求更改dbConfigProvider?我想根据请求参数更改@NamedDatabase 参数
【问题讨论】:
标签: scala playframework guice slick