in core/src/main/scala/org/apache/pekko/persistence/r2dbc/ConnectionFactoryProvider.scala [70:106]
private def createConnectionFactory(settings: ConnectionFactorySettings): ConnectionFactory = {
val builder =
settings.urlOption match {
case Some(url) =>
ConnectionFactoryOptions.builder().from(ConnectionFactoryOptions.parse(url))
case _ =>
ConnectionFactoryOptions
.builder()
.option(ConnectionFactoryOptions.DRIVER, settings.driver)
.option(ConnectionFactoryOptions.HOST, settings.host)
.option(ConnectionFactoryOptions.PORT, Integer.valueOf(settings.port))
.option(ConnectionFactoryOptions.USER, settings.user)
.option(ConnectionFactoryOptions.PASSWORD, settings.password)
.option(ConnectionFactoryOptions.DATABASE, settings.database)
.option(ConnectionFactoryOptions.CONNECT_TIMEOUT, JDuration.ofMillis(settings.connectTimeout.toMillis))
}
builder
.option(PostgresqlConnectionFactoryProvider.FORCE_BINARY, java.lang.Boolean.TRUE)
.option(PostgresqlConnectionFactoryProvider.PREFER_ATTACHED_BUFFERS, java.lang.Boolean.TRUE)
.option(
PostgresqlConnectionFactoryProvider.PREPARED_STATEMENT_CACHE_QUERIES,
Integer.valueOf(settings.statementCacheSize))
if (settings.sslEnabled) {
builder.option(ConnectionFactoryOptions.SSL, java.lang.Boolean.TRUE)
if (settings.sslMode.nonEmpty)
builder.option(PostgresqlConnectionFactoryProvider.SSL_MODE, SSLMode.fromValue(settings.sslMode))
if (settings.sslRootCert.nonEmpty)
builder.option(PostgresqlConnectionFactoryProvider.SSL_ROOT_CERT, settings.sslRootCert)
}
ConnectionFactories.get(builder.build())
}