Skip to content

Commit 09f8a59

Browse files
amigarulezmergify[bot]
authored andcommitted
Feat/datastax module (#74)
* feat: create datastax module project * feat: datastax configuration data classes * feat: programmatic SSL configuration * feat: datastax module * feat: datastax pureconfig readers * docs: add datastax module documentation * refactor: formatting * refactor: module name, sorting * refactor: prefix readers with module name * refactor: sealed family instead of string constant, readers prefix, private helper * refactor: default values in profile * docs: example app and mdoc * refactor: add defaults to configuration classes * refactor: formatting * refactor: remove SSL configuration, add SSL context parameter * refactor: remove unused ssl classes * refactor: rename module * refactor: add Config suffix * refactor: rename readers, fix docker
1 parent 8872c17 commit 09f8a59

File tree

17 files changed

+1414
-1
lines changed

17 files changed

+1414
-1
lines changed

build.sbt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ lazy val root = project
2020
.aggregate(
2121
bundleMonixHttp4sBlaze,
2222
bundleZioHttp4sBlaze,
23+
cassandraDatastaxDriver,
24+
cassandraDatastaxDriverPureConfig,
2325
doobieHikari,
2426
doobieHikariPureConfig,
2527
example,
@@ -82,6 +84,22 @@ lazy val bundleZioHttp4sBlaze = project
8284
)
8385
)
8486

87+
lazy val cassandraDatastaxDriver = project
88+
.in(file("cassandra-datastax-driver"))
89+
.settings(commonSettings)
90+
.settings(
91+
name := "sst-cassandra-datastax-driver",
92+
libraryDependencies += Dependencies.datastaxJavaDriverCore
93+
)
94+
95+
lazy val cassandraDatastaxDriverPureConfig = project
96+
.in(file("cassandra-datastax-driver-pureconfig"))
97+
.dependsOn(cassandraDatastaxDriver, pureConfig)
98+
.settings(commonSettings)
99+
.settings(
100+
name := "sst-cassandra-datastax-driver-pureconfig"
101+
)
102+
85103
lazy val doobieHikari = project
86104
.in(file("doobie-hikari"))
87105
.settings(commonSettings)
@@ -105,6 +123,8 @@ lazy val example = project
105123
.in(file("example"))
106124
.dependsOn(
107125
bundleZioHttp4sBlaze,
126+
cassandraDatastaxDriver,
127+
cassandraDatastaxDriverPureConfig,
108128
doobieHikari,
109129
doobieHikariPureConfig,
110130
flyway,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package com.avast.sst.datastax.pureconfig
2+
3+
import com.avast.sst.datastax.config._
4+
import pureconfig.{ConfigFieldMapping, ConfigReader, PascalCase}
5+
import pureconfig.generic.semiauto.{deriveEnumerationReader, deriveReader}
6+
7+
trait ConfigReaders {
8+
9+
implicit val cassandraDatastaxDriverDatastaxConfigReader: ConfigReader[CassandraDatastaxDriverConfig] = deriveReader
10+
11+
// Basic driver config
12+
implicit val cassandraDatastaxDriverBasicConfigReader: ConfigReader[BasicConfig] = deriveReader
13+
implicit val cassandraDatastaxDriverConsistencyLevelReader: ConfigReader[ConsistencyLevel] =
14+
deriveEnumerationReader[ConsistencyLevel](ConfigFieldMapping(PascalCase, PascalCase))
15+
implicit val cassandraDatastaxDriverBasicRequestConfigReader: ConfigReader[BasicRequestConfig] = deriveReader
16+
implicit val cassandraDatastaxDriverLoadBalancingConfigReader: ConfigReader[LoadBalancingPolicyConfig] = deriveReader
17+
implicit val cassandraDatastaxDriverFilterConfigReader: ConfigReader[FilterConfig] = deriveReader
18+
19+
// Advanced driver config
20+
implicit val cassandraDatastaxDriverAdvancedConfigReader: ConfigReader[AdvancedConfig] = deriveReader
21+
implicit val cassandraDatastaxDriverRetryPolicyConfigReader: ConfigReader[RetryPolicyConfig] = deriveReader
22+
implicit val cassandraDatastaxDriverSpeculativeExecutionPolicyConfigReader: ConfigReader[SpeculativeExecutionPolicyConfig] = deriveReader
23+
implicit val cassandraDatastaxDriverTimestampGeneratorConfigReader: ConfigReader[TimestampGeneratorConfig] = deriveReader
24+
implicit val cassandraDatastaxDriverTraceConfigReader: ConfigReader[TraceConfig] = deriveReader
25+
implicit val cassandraDatastaxDriverDriftWarningConfigReader: ConfigReader[DriftWarningConfig] = deriveReader
26+
implicit val cassandraDatastaxDriverConnectionConfigReader: ConfigReader[ConnectionConfig] = deriveReader
27+
implicit val cassandraDatastaxDriverPoolConfigReader: ConfigReader[PoolConfig] = deriveReader
28+
implicit val cassandraDatastaxDriverReconnectionPolicyConfigReader: ConfigReader[ReconnectionPolicyConfig] = deriveReader
29+
implicit val cassandraDatastaxDriverAuthProviderConfigReader: ConfigReader[AuthProviderConfig] = deriveReader
30+
implicit val cassandraDatastaxDriverRequestTrackerConfigReader: ConfigReader[RequestTrackerConfig] = deriveReader
31+
implicit val cassandraDatastaxDriverLogsConfigReader: ConfigReader[LogsConfig] = deriveReader
32+
implicit val cassandraDatastaxDriverSlowConfigReader: ConfigReader[SlowConfig] = deriveReader
33+
implicit val cassandraDatastaxDriverThrottlerConfigReader: ConfigReader[ThrottlerConfig] = deriveReader
34+
implicit val cassandraDatastaxDriverNodeStateListenerConfigReader: ConfigReader[NodeStateListenerConfig] = deriveReader
35+
implicit val cassandraDatastaxDriverSchemaChangeListenerConfigReader: ConfigReader[SchemaChangeListenerConfig] = deriveReader
36+
implicit val cassandraDatastaxDriverAddressTranslatorConfigReader: ConfigReader[AddressTranslatorConfig] = deriveReader
37+
implicit val cassandraDatastaxDriverProtocolConfigReader: ConfigReader[ProtocolConfig] = deriveReader
38+
implicit val cassandraDatastaxDriverMetricsConfigReader: ConfigReader[MetricsConfig] = deriveReader
39+
implicit val cassandraDatastaxDriverSessionConfigReader: ConfigReader[SessionConfig] = deriveReader
40+
implicit val cassandraDatastaxDriverCqlRequestsConfigReader: ConfigReader[CqlRequestsConfig] = deriveReader
41+
implicit val cassandraDatastaxDriverThrottlingConfigReader: ConfigReader[ThrottlingConfig] = deriveReader
42+
implicit val cassandraDatastaxDriverDelayConfigReader: ConfigReader[DelayConfig] = deriveReader
43+
implicit val cassandraDatastaxDriverNodeConfigReader: ConfigReader[NodeConfig] = deriveReader
44+
implicit val cassandraDatastaxDriverCqlMessagesConfigReader: ConfigReader[CqlMessagesConfig] = deriveReader
45+
implicit val cassandraDatastaxDriverSocketConfigReader: ConfigReader[SocketConfig] = deriveReader
46+
implicit val cassandraDatastaxDriverHeartbeatConfigReader: ConfigReader[HeartbeatConfig] = deriveReader
47+
implicit val cassandraDatastaxDriverMetadataConfigReader: ConfigReader[MetadataConfig] = deriveReader
48+
implicit val cassandraDatastaxDriverTopologyEventDebouncerConfigReader: ConfigReader[TopologyEventDebouncerConfig] = deriveReader
49+
implicit val cassandraDatastaxDriverSchemaConfigReader: ConfigReader[SchemaConfig] = deriveReader
50+
implicit val cassandraDatastaxDriverDebouncerConfigReader: ConfigReader[DebouncerConfig] = deriveReader
51+
implicit val cassandraDatastaxDriverTokenMapConfigReader: ConfigReader[TokenMapConfig] = deriveReader
52+
implicit val cassandraDatastaxDriverControlConnectionConfigReader: ConfigReader[ControlConnectionConfig] = deriveReader
53+
implicit val cassandraDatastaxDriverSchemaAgreementConfigReader: ConfigReader[SchemaAgreementConfig] = deriveReader
54+
implicit val cassandraDatastaxDriverPreparedStatementsConfigReader: ConfigReader[PreparedStatementsConfig] = deriveReader
55+
implicit val cassandraDatastaxDriverReprepareOnUpConfigReader: ConfigReader[ReprepareOnUpConfig] = deriveReader
56+
implicit val cassandraDatastaxDriverNettyConfigReader: ConfigReader[NettyConfig] = deriveReader
57+
implicit val cassandraDatastaxDriverGroupConfigReader: ConfigReader[GroupConfig] = deriveReader
58+
implicit val cassandraDatastaxDriverShutdownConfigReader: ConfigReader[ShutdownConfig] = deriveReader
59+
implicit val cassandraDatastaxDriverTimerConfigReader: ConfigReader[TimerConfig] = deriveReader
60+
implicit val cassandraDatastaxDriverCoalescerConfigReader: ConfigReader[CoalescerConfig] = deriveReader
61+
implicit val cassandraDatastaxDriverAdvancedRequestConfigReader: ConfigReader[AdvancedRequestConfig] = deriveReader
62+
63+
// Profile overridable config
64+
implicit val cassandraDatastaxDriverProfileConfigReader: ConfigReader[ProfileConfig] = deriveReader
65+
implicit val cassandraDatastaxDriverProfileBasicConfigReader: ConfigReader[ProfileBasicConfig] = deriveReader
66+
implicit val cassandraDatastaxDriverProfileAdvancedConfigReader: ConfigReader[ProfileAdvancedConfig] = deriveReader
67+
implicit val cassandraDatastaxDriverProfilePreparedStatementsConfigReader: ConfigReader[ProfilePreparedStatementsConfig] = deriveReader
68+
implicit val cassandraDatastaxDriverProfileProfileAdvancedRequestConfigReader: ConfigReader[ProfileAdvancedRequestConfig] = deriveReader
69+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.avast.sst.datastax.pureconfig
2+
3+
import pureconfig.ConfigFieldMapping
4+
import pureconfig.generic.ProductHint
5+
6+
/** Contains [[pureconfig.ConfigReader]] instances with default "kebab-case" naming convention. */
7+
object implicits extends ConfigReaders {
8+
9+
/** Contains [[pureconfig.ConfigReader]] instances with "kebab-case" naming convention.
10+
*
11+
* This is alias for the default `implicits._` import.
12+
*/
13+
object KebabCase extends ConfigReaders
14+
15+
/** Contains [[pureconfig.ConfigReader]] instances with "camelCase" naming convention. */
16+
object CamelCase extends ConfigReaders {
17+
implicit def hint[T]: ProductHint[T] = ProductHint(ConfigFieldMapping(pureconfig.CamelCase, pureconfig.CamelCase))
18+
}
19+
20+
}

0 commit comments

Comments
 (0)