Skip to content

Commit 4ee6de3

Browse files
committed
Add logLevel to DatabaseConfig, simplify connection factory setup, and refine runtime classpath exclusions
1 parent 4528e30 commit 4ee6de3

3 files changed

Lines changed: 23 additions & 14 deletions

File tree

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ dependencies {
2222
configurations.runtimeClasspath {
2323
exclude("io.projectreactor", "reactor-core")
2424
exclude("org.reactivestreams")
25+
exclude("org.slf4j")
2526
}
2627

2728
shadow {

src/main/kotlin/dev/slne/surf/database/DatabaseApi.kt

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,20 @@ import io.r2dbc.pool.ConnectionPoolConfiguration
88
import io.r2dbc.spi.ConnectionFactory
99
import io.r2dbc.spi.ConnectionFactoryOptions
1010
import io.r2dbc.spi.ConnectionFactoryOptions.*
11+
import io.r2dbc.spi.IsolationLevel
12+
import io.r2dbc.spi.Result
1113
import net.kyori.adventure.text.logger.slf4j.ComponentLogger
1214
import org.jetbrains.exposed.v1.core.vendors.MariaDBDialect
1315
import org.jetbrains.exposed.v1.r2dbc.R2dbcDatabase
1416
import org.jetbrains.exposed.v1.r2dbc.R2dbcDatabaseConfig
17+
import org.jetbrains.exposed.v1.r2dbc.mappers.R2dbcRegistryTypeMapping
1518
import org.jetbrains.exposed.v1.r2dbc.transactions.TransactionManager
19+
import org.jetbrains.exposed.v1.r2dbc.transactions.suspendTransaction
20+
import org.mariadb.r2dbc.MariadbConnectionConfiguration
21+
import org.mariadb.r2dbc.MariadbConnectionFactory
1622
import org.mariadb.r2dbc.MariadbConnectionFactoryProvider
1723
import org.slf4j.event.Level
24+
import reactor.core.publisher.Flux
1825
import java.nio.file.Path
1926
import java.time.Duration.ofMillis
2027

@@ -44,19 +51,15 @@ class DatabaseApi internal constructor(val database: R2dbcDatabase) {
4451
configCustomizer: R2dbcDatabaseConfig.Builder.() -> Unit = {}
4552
): DatabaseApi {
4653
val config = DatabaseConfig.create(pluginPath)
54+
val configuration = MariadbConnectionConfiguration.builder()
55+
.host(config.credentials.host)
56+
.port(config.credentials.port)
57+
.username(config.credentials.username)
58+
.password(config.credentials.password)
59+
.database(config.credentials.database)
60+
.build()
4761

48-
val connectionFactoryOptions = ConnectionFactoryOptions.builder().apply {
49-
option(DRIVER, MariadbConnectionFactoryProvider.MARIADB_DRIVER)
50-
option(HOST, config.credentials.host)
51-
option(PORT, config.credentials.port)
52-
option(USER, config.credentials.username)
53-
option(PASSWORD, config.credentials.password)
54-
option(DATABASE, config.credentials.database)
55-
}.build()
56-
57-
val connectionFactory = MariadbConnectionFactoryProvider()
58-
.create(connectionFactoryOptions)
59-
62+
val connectionFactory = MariadbConnectionFactory.from(configuration)
6063
val poolConfig = ConnectionPoolConfiguration.builder()
6164
.connectionFactory(connectionFactory)
6265
.acquireRetry(1)
@@ -76,8 +79,9 @@ class DatabaseApi internal constructor(val database: R2dbcDatabase) {
7679

7780
val caller = getCallerClass() ?: DatabaseApi::class.java
7881
val logger = ComponentLogger.logger(caller)
82+
val logLevel = config.logLevel
7983

80-
return create(pool, logger, configCustomizer)
84+
return create(pool, logger, logLevel, configCustomizer)
8185
}
8286

8387
/**
@@ -94,11 +98,13 @@ class DatabaseApi internal constructor(val database: R2dbcDatabase) {
9498
fun create(
9599
connectionFactory: ConnectionFactory,
96100
logger: ComponentLogger = ComponentLogger.logger("DatabaseApi"),
101+
logLevel: Level = Level.DEBUG,
97102
configCustomizer: R2dbcDatabaseConfig.Builder.() -> Unit = {}
98103
): DatabaseApi {
99104
val database = R2dbcDatabase.connect(connectionFactory, R2dbcDatabaseConfig {
100105
explicitDialect = MariaDBDialect()
101-
sqlLogger = ComponentSqlLogger(logger, Level.DEBUG)
106+
sqlLogger = ComponentSqlLogger(logger, logLevel)
107+
defaultR2dbcIsolationLevel = IsolationLevel.READ_UNCOMMITTED
102108
configCustomizer()
103109
})
104110

src/main/kotlin/dev/slne/surf/database/config/DatabaseConfig.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package dev.slne.surf.database.config
22

33
import dev.slne.surf.surfapi.core.api.config.createSpongeYmlConfig
44
import dev.slne.surf.surfapi.core.api.config.surfConfigApi
5+
import org.slf4j.event.Level
56
import org.spongepowered.configurate.objectmapping.ConfigSerializable
67
import java.nio.file.Path
78

89
@ConfigSerializable
910
internal data class DatabaseConfig(
11+
val logLevel: Level = Level.DEBUG,
1012
val credentials: ConnectionDetails = ConnectionDetails(),
1113
val pool: PoolConfig = PoolConfig()
1214
) {

0 commit comments

Comments
 (0)