All Downloads are FREE. Search and download functionalities are using the official Maven repository.

akka.persistence.common.ScalikeJDBCExtension.scala Maven / Gradle / Ivy

There is a newer version: 0.5.1
Show newest version
package akka.persistence.common

import akka.actor.{ExtendedActorSystem, Extension, ExtensionId, ExtensionIdProvider}
import scalikejdbc.async.{AsyncConnectionPool, AsyncConnectionPoolSettings}

private[persistence] object ScalikeJDBCExtension extends ExtensionId[ScalikeJDBCExtension] with ExtensionIdProvider {
  override def createExtension(system: ExtendedActorSystem): ScalikeJDBCExtension = {
    new ScalikeJDBCExtension(system)
  }

  override def lookup(): ExtensionId[_ <: Extension] = ScalikeJDBCExtension
}

private[persistence] class ScalikeJDBCExtension(system: ExtendedActorSystem) extends Extension {
  val config = SQLAsyncConfig(system)
  val connectionPoolName = s"${config.rootKey}.${config.url}"
  val sessionProvider: ScalikeJDBCSessionProvider = {
    new DefaultScalikeJDBCSessionProvider(connectionPoolName, system.dispatcher)
  }
  AsyncConnectionPool.add(
    name = connectionPoolName,
    url = config.url,
    user = config.user,
    password = if (config.password == "") null else config.password,
    settings = AsyncConnectionPoolSettings(
      maxPoolSize = config.maxPoolSize,
      maxQueueSize = config.waitQueueCapacity)
  )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy