Files
odc-analyzer/app/modules/OdcModule.scala
2020-01-23 10:02:05 +01:00

35 lines
1.3 KiB
Scala

package modules
import com.google.inject.{AbstractModule, Provides}
import net.ceedubs.ficus.Ficus._
import net.ceedubs.ficus.readers.ArbitraryTypeReader._
import net.codingwell.scalaguice.ScalaModule
import play.api.{Application, Configuration}
import services.{OdcConfig, OdcDbConnectionConfig, OdcService}
class OdcModule extends AbstractModule with ScalaModule{
override def configure(): Unit = {}
private val Drivers = Map(
"slick.driver.MySQLDriver$" -> "org.mariadb.jdbc.Driver",
"slick.driver.PostgresDriver$" -> "org.postgresql.Driver"
)
@Provides
def provideOdcServiceOption(conf: Configuration, application: Application): Option[OdcService] = {
lazy val dbConfig = {
val driverClass = Drivers(conf.getString("slick.dbs.odc.driver").get)
val driverJar = Class.forName(driverClass).getProtectionDomain.getCodeSource.getLocation.getPath
OdcDbConnectionConfig(
driverClass = driverClass,
driverJar = driverJar,
url = conf.getString("slick.dbs.odc.db.url").get,
user = conf.getString("slick.dbs.odc.db.user").get,
password = conf.getString("slick.dbs.odc.db.password").get
)
}
conf.underlying.getAs[OdcConfig]("odc").map(config => new OdcService(config, dbConfig)(application))
}
}