Skip to content

Commit

Permalink
Remove pureconfig derivation
Browse files Browse the repository at this point in the history
  • Loading branch information
grzegorz-bielski committed Mar 6, 2024
1 parent 77f2dfe commit fca7198
Show file tree
Hide file tree
Showing 8 changed files with 133 additions and 20 deletions.
12 changes: 6 additions & 6 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,12 @@ lazy val scassandra = (project in file("scassandra"))
)
)
.settings(
libraryDependencies ++= List(Pureconfig.pureconfig)
// libraryDependencies ++= crossSettings(
// scalaVersion.value,
// if3 = List(Pureconfig.core),
// if2 = List(Pureconfig.pureconfig),
// )
libraryDependencies ++= List(Pureconfig.pureconfig),
libraryDependencies ++= crossSettings(
scalaVersion.value,
if3 = List(Pureconfig.core),
if2 = List(Pureconfig.pureconfig),
)
)

lazy val tests = (project in file("tests"))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.evolutiongaming.scassandra

import pureconfig.ConfigReader
import pureconfig.generic.semiauto.deriveReader

trait AuthenticationConfigImplicits {
implicit val configReaderAuthenticationConfig: ConfigReader[AuthenticationConfig] = deriveReader
implicit val configReaderAuthenticationConfig: ConfigReader[AuthenticationConfig] =
ConfigReader.forProduct2[AuthenticationConfig, String, Masked[String]]("username", "password")(AuthenticationConfig.apply)
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
package com.evolutiongaming.scassandra

import pureconfig.ConfigReader
import pureconfig.generic.semiauto.deriveReader

trait LoadBalancingConfigImplicits {
implicit val configReaderLoadBalancingConfig: ConfigReader[LoadBalancingConfig] = deriveReader
implicit val configReaderLoadBalancingConfig: ConfigReader[LoadBalancingConfig] =
ConfigReader.forProduct2[LoadBalancingConfig, Option[String], Option[Boolean]]("local-dc", "allow-remote-dcs-for-local-consistency-level") {
(localDc, allowRemoteDcsForLocalConsistencyLevel) =>
val defaultConfig = LoadBalancingConfig()

LoadBalancingConfig(
localDc.getOrElse(defaultConfig.localDc),
allowRemoteDcsForLocalConsistencyLevel.getOrElse(defaultConfig.allowRemoteDcsForLocalConsistencyLevel)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,60 @@ package com.evolutiongaming.scassandra
import com.datastax.driver.core.ConsistencyLevel
import com.evolutiongaming.scassandra.util.ConfigReaderFromEnum
import pureconfig.ConfigReader
import pureconfig.generic.semiauto.deriveReader

import scala.concurrent.duration._

trait QueryConfigImplicits {
implicit val configReaderConsistencyLevel: ConfigReader[ConsistencyLevel] = ConfigReaderFromEnum(ConsistencyLevel.values())

implicit val configReaderQueryConfig: ConfigReader[QueryConfig] = deriveReader
implicit val configReaderQueryConfig: ConfigReader[QueryConfig] =
ConfigReader.forProduct13[
QueryConfig,
Option[ConsistencyLevel],
Option[ConsistencyLevel],
Option[Int],
Option[Boolean],
Option[Int],
Option[Int],
Option[Int],
Option[FiniteDuration],
Option[FiniteDuration],
Option[FiniteDuration],
Option[Boolean],
Option[Boolean],
Option[Boolean]
](
"consistency",
"serial-consistency",
"fetch-size",
"default-idempotence",
"max-pending-refresh-node-list-requests",
"max-pending-refresh-node-requests",
"max-pending-refresh-schema-requests",
"refresh-node-list-interval",
"refresh-node-interval",
"refresh-schema-interval",
"metadata",
"re-prepare-on-up",
"prepare-on-all-hosts"
) { (consistency, serialConsistency, fetchSize, defaultIdempotence, maxPendingRefreshNodeListRequests, maxPendingRefreshNodeRequests, maxPendingRefreshSchemaRequests, refreshNodeListInterval, refreshNodeInterval, refreshSchemaInterval, metadata, rePrepareOnUp, prepareOnAllHosts) =>
val defaultConfig = QueryConfig()

QueryConfig(
consistency.getOrElse(defaultConfig.consistency),
serialConsistency.getOrElse(defaultConfig.serialConsistency),
fetchSize.getOrElse(defaultConfig.fetchSize),
defaultIdempotence.getOrElse(defaultConfig.defaultIdempotence),
maxPendingRefreshNodeListRequests.getOrElse(defaultConfig.maxPendingRefreshNodeListRequests),
maxPendingRefreshNodeRequests.getOrElse(defaultConfig.maxPendingRefreshNodeRequests),
maxPendingRefreshSchemaRequests.getOrElse(defaultConfig.maxPendingRefreshSchemaRequests),
refreshNodeListInterval.getOrElse(defaultConfig.refreshNodeListInterval),
refreshNodeInterval.getOrElse(defaultConfig.refreshNodeInterval),
refreshSchemaInterval.getOrElse(defaultConfig.refreshSchemaInterval),
metadata.getOrElse(defaultConfig.metadata),
rePrepareOnUp.getOrElse(defaultConfig.rePrepareOnUp),
prepareOnAllHosts.getOrElse(defaultConfig.prepareOnAllHosts)
)
}

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
package com.evolutiongaming.scassandra

import pureconfig.ConfigReader
import pureconfig.generic.semiauto.deriveReader
import scala.concurrent.duration.FiniteDuration

trait ReconnectionConfigImplicits {
implicit val configReaderReconnectionConfig: ConfigReader[ReconnectionConfig] = deriveReader
implicit val configReaderReconnectionConfig: ConfigReader[ReconnectionConfig] =
ConfigReader.forProduct2[ReconnectionConfig, Option[FiniteDuration], Option[FiniteDuration]]("min-delay", "max-delay") {
(minDelay, maxDelay) =>
val defaultConfig = ReconnectionConfig()

ReconnectionConfig(
minDelay.getOrElse(defaultConfig.minDelay),
maxDelay.getOrElse(defaultConfig.maxDelay)
)
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package com.evolutiongaming.scassandra

import pureconfig.ConfigReader
import pureconfig.generic.semiauto.deriveReader
import com.evolutiongaming.scassandra.ReplicationStrategyConfig.*

trait ReplicationStrategyConfigImplicits {
implicit val configReaderSimple: ConfigReader[Simple] = deriveReader
implicit val configReaderSimple: ConfigReader[Simple] =
ConfigReader.forProduct1[Simple, Option[Int]]("replication-factor") { replicationFactor =>
val defaultConfig = Simple()

Simple(replicationFactor.getOrElse(defaultConfig.replicationFactor))
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,41 @@
package com.evolutiongaming.scassandra

import pureconfig.ConfigReader
import pureconfig.generic.semiauto.deriveReader
import scala.concurrent.duration.FiniteDuration

trait SocketConfigImplicits {
implicit val configReaderSocketConfig: ConfigReader[SocketConfig] = deriveReader
implicit val configReaderSocketConfig: ConfigReader[SocketConfig] =
ConfigReader.forProduct8[
SocketConfig,
Option[FiniteDuration],
Option[FiniteDuration],
Option[Boolean],
Option[Boolean],
Option[Int],
Option[Boolean],
Option[Int],
Option[Int]
](
"connect-timeout",
"read-timeout",
"keep-alive",
"reuse-address",
"so-linger",
"tcp-no-delay",
"receive-buffer-size",
"send-buffer-size",
) { (connectTimeout, readTimeout, keepAlive, reuseAddress, soLinger, tcpNoDelay, receiveBufferSize, sendBufferSize) =>
val defaultConfig = SocketConfig()

SocketConfig(
connectTimeout.getOrElse(defaultConfig.connectTimeout),
readTimeout.getOrElse(defaultConfig.readTimeout),
keepAlive.orElse(defaultConfig.keepAlive),
reuseAddress.orElse(defaultConfig.reuseAddress),
soLinger.orElse(defaultConfig.soLinger),
tcpNoDelay.orElse(defaultConfig.tcpNoDelay),
receiveBufferSize.orElse(defaultConfig.receiveBufferSize),
sendBufferSize.orElse(defaultConfig.sendBufferSize)
)
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
package com.evolutiongaming.scassandra

import pureconfig.ConfigReader
import pureconfig.generic.semiauto.deriveReader
import scala.concurrent.duration.FiniteDuration

trait SpeculativeConfigImplicits {
implicit val configReaderSpeculativeExecutionConfig: ConfigReader[SpeculativeExecutionConfig] = deriveReader
implicit val configReaderSpeculativeExecutionConfig: ConfigReader[SpeculativeExecutionConfig] =
ConfigReader.forProduct2[SpeculativeExecutionConfig, Option[FiniteDuration], Option[Int]]("delay", "max-executions") {
(delay, maxExecutions) =>
val defaultConfig = SpeculativeExecutionConfig()

SpeculativeExecutionConfig(
delay.getOrElse(defaultConfig.delay),
maxExecutions.getOrElse(defaultConfig.maxExecutions)
)
}
}

0 comments on commit fca7198

Please sign in to comment.