Skip to content

Commit 4528e30

Browse files
committed
Introduce ComponentSqlLogger for enhanced SQL logging and refactor timestamp handling in AuditableLongIdTable
1 parent 9656d72 commit 4528e30

3 files changed

Lines changed: 39 additions & 7 deletions

File tree

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
package dev.slne.surf.database
22

33
import dev.slne.surf.database.config.DatabaseConfig
4+
import dev.slne.surf.database.logger.ComponentSqlLogger
45
import dev.slne.surf.surfapi.core.api.util.getCallerClass
56
import io.r2dbc.pool.ConnectionPool
67
import io.r2dbc.pool.ConnectionPoolConfiguration
78
import io.r2dbc.spi.ConnectionFactory
89
import io.r2dbc.spi.ConnectionFactoryOptions
910
import io.r2dbc.spi.ConnectionFactoryOptions.*
11+
import net.kyori.adventure.text.logger.slf4j.ComponentLogger
1012
import org.jetbrains.exposed.v1.core.vendors.MariaDBDialect
1113
import org.jetbrains.exposed.v1.r2dbc.R2dbcDatabase
1214
import org.jetbrains.exposed.v1.r2dbc.R2dbcDatabaseConfig
1315
import org.jetbrains.exposed.v1.r2dbc.transactions.TransactionManager
1416
import org.mariadb.r2dbc.MariadbConnectionFactoryProvider
17+
import org.slf4j.event.Level
1518
import java.nio.file.Path
1619
import java.time.Duration.ofMillis
1720

@@ -70,7 +73,11 @@ class DatabaseApi internal constructor(val database: R2dbcDatabase) {
7073

7174

7275
val pool = ConnectionPool(poolConfig)
73-
return create(pool, configCustomizer)
76+
77+
val caller = getCallerClass() ?: DatabaseApi::class.java
78+
val logger = ComponentLogger.logger(caller)
79+
80+
return create(pool, logger, configCustomizer)
7481
}
7582

7683
/**
@@ -86,10 +93,12 @@ class DatabaseApi internal constructor(val database: R2dbcDatabase) {
8693
@TestOnlyDatabaseApi
8794
fun create(
8895
connectionFactory: ConnectionFactory,
96+
logger: ComponentLogger = ComponentLogger.logger("DatabaseApi"),
8997
configCustomizer: R2dbcDatabaseConfig.Builder.() -> Unit = {}
9098
): DatabaseApi {
9199
val database = R2dbcDatabase.connect(connectionFactory, R2dbcDatabaseConfig {
92100
explicitDialect = MariaDBDialect()
101+
sqlLogger = ComponentSqlLogger(logger, Level.DEBUG)
93102
configCustomizer()
94103
})
95104

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package dev.slne.surf.database.logger
2+
3+
import dev.slne.surf.surfapi.core.api.util.getCallerClass
4+
import net.kyori.adventure.text.logger.slf4j.ComponentLogger
5+
import org.jetbrains.exposed.v1.core.SqlLogger
6+
import org.jetbrains.exposed.v1.core.Transaction
7+
import org.jetbrains.exposed.v1.core.statements.StatementContext
8+
import org.jetbrains.exposed.v1.core.statements.expandArgs
9+
import org.slf4j.event.Level
10+
11+
class ComponentSqlLogger(
12+
private val logger: ComponentLogger = ComponentLogger.logger(getCallerClass() ?: ComponentSqlLogger::class.java),
13+
private val level: Level
14+
) : SqlLogger {
15+
16+
override fun log(
17+
context: StatementContext,
18+
transaction: Transaction
19+
) {
20+
logger.atLevel(level)
21+
.log("SQL: ${context.expandArgs(transaction)}")
22+
}
23+
}
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package dev.slne.surf.database.table
22

33
import org.jetbrains.exposed.v1.core.dao.id.LongIdTable
4-
import org.jetbrains.exposed.v1.javatime.CurrentTimestampWithTimeZone
5-
import org.jetbrains.exposed.v1.javatime.timestampWithTimeZone
4+
import org.jetbrains.exposed.v1.javatime.CurrentTimestamp
5+
import org.jetbrains.exposed.v1.javatime.timestamp
66

77
open class AuditableLongIdTable(name: String = "") : LongIdTable(name) {
8-
val createdAt = timestampWithTimeZone("created_at")
9-
.defaultExpression(CurrentTimestampWithTimeZone)
10-
val updatedAt = timestampWithTimeZone("updated_at")
11-
.defaultExpression(CurrentTimestampWithTimeZone)
8+
val createdAt = timestamp("created_at")
9+
.defaultExpression(CurrentTimestamp)
10+
val updatedAt = timestamp("updated_at")
11+
.defaultExpression(CurrentTimestamp)
1212
}
1313

0 commit comments

Comments
 (0)