From 1951233d8887aa200687311eb39f97b56783f0ef Mon Sep 17 00:00:00 2001 From: Ruslan Burdeniuk Date: Fri, 13 Feb 2026 14:22:04 +0200 Subject: [PATCH 1/3] DRMCDU-1534: log sql before executing --- library/jdbc/core/api/jdbc-core-library.api | 1 + library/jdbc/core/build.gradle.kts | 3 +++ .../uframework/jdbc/sql/ParametrizedSql.kt | 5 +++++ .../jdbc/transaction/TransactionInstance.kt | 16 ++++++++++++---- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/library/jdbc/core/api/jdbc-core-library.api b/library/jdbc/core/api/jdbc-core-library.api index ddbae08d..db6ac97f 100644 --- a/library/jdbc/core/api/jdbc-core-library.api +++ b/library/jdbc/core/api/jdbc-core-library.api @@ -72,6 +72,7 @@ public final class io/github/ustudiocompany/uframework/jdbc/sql/ParametrizedSql public synthetic fun (Ljava/lang/String;Ljava/util/Map;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun getParameters ()Ljava/util/Map; public final fun getValue ()Ljava/lang/String; + public fun toString ()Ljava/lang/String; } public final class io/github/ustudiocompany/uframework/jdbc/sql/ParametrizedSql$Companion { diff --git a/library/jdbc/core/build.gradle.kts b/library/jdbc/core/build.gradle.kts index 8d890fd1..ba4d62b5 100644 --- a/library/jdbc/core/build.gradle.kts +++ b/library/jdbc/core/build.gradle.kts @@ -7,9 +7,12 @@ plugins { dependencies { implementation(project(":failure-library")) + implementation(project(":logging-slf4j-extension-library")) implementation(libs.airflux.commons.types) { isChanging = true } implementation(libs.postgresql) + implementation(libs.slf4j.api) + implementation(libs.logback.classic) /* Tests */ testImplementation(project(":jdbc-kotest-matchers-library")) diff --git a/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/sql/ParametrizedSql.kt b/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/sql/ParametrizedSql.kt index 84925520..df569e88 100644 --- a/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/sql/ParametrizedSql.kt +++ b/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/sql/ParametrizedSql.kt @@ -5,6 +5,11 @@ public class ParametrizedSql private constructor( public val parameters: Map ) { + override fun toString(): String { + return "Sql: '${value.trim()}' \n " + + "Parameters: ${parameters.entries.joinToString(", ") { "${it.key}: ${it.value}" }}" + } + public companion object { private const val PARAMETER_NAME_PLACEHOLDER = "?" private const val PREFIX_PARAMETER_NAME = ':' diff --git a/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/transaction/TransactionInstance.kt b/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/transaction/TransactionInstance.kt index a3559eb4..3277faeb 100644 --- a/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/transaction/TransactionInstance.kt +++ b/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/transaction/TransactionInstance.kt @@ -12,13 +12,17 @@ import io.github.ustudiocompany.uframework.jdbc.statement.JDBCNamedPreparedState import io.github.ustudiocompany.uframework.jdbc.statement.JDBCPreparedStatement import io.github.ustudiocompany.uframework.jdbc.statement.JDBCPreparedStatementInstance import io.github.ustudiocompany.uframework.jdbc.statement.JDBCStatement +import io.github.ustudiocompany.uframework.telemetry.logging.logger.slf4jextension.debug import java.sql.Connection import java.sql.PreparedStatement +import org.slf4j.LoggerFactory internal class TransactionInstance( private val unwrappedConnection: Connection, ) : Transaction, JDBCConnection { + private val logger = LoggerFactory.getLogger(TransactionInstance::class.java) + override val connection: JDBCConnection get() = this @@ -48,18 +52,22 @@ internal class TransactionInstance( override fun preparedStatement( sql: String, timeout: JDBCStatement.Timeout - ): JDBCResult = - prepareStatement(sql, timeout) + ): JDBCResult { + logger.debug { "Executing Query: \n $sql" } + return prepareStatement(sql, timeout) .map { statement -> JDBCPreparedStatementInstance(statement = statement) } + } override fun namedPreparedStatement( sql: ParametrizedSql, timeout: JDBCStatement.Timeout - ): JDBCResult = - prepareStatement(sql.value, timeout) + ): JDBCResult { + logger.debug { "Executing ParametrizedSql: \n $sql" } + return prepareStatement(sql.value, timeout) .map { statement -> JDBCNamedPreparedStatementInstance(parameters = sql.parameters, statement = statement) } + } private fun prepareStatement( sql: String, From d352632ebd0da9af3aed288ced7de250bde057bd Mon Sep 17 00:00:00 2001 From: Ruslan Burdeniuk Date: Fri, 13 Feb 2026 15:20:44 +0200 Subject: [PATCH 2/3] DRMCDU-1534: add error logs into commit and rollback transaction functionality --- .../jdbc/transaction/TransactionInstance.kt | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/transaction/TransactionInstance.kt b/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/transaction/TransactionInstance.kt index 3277faeb..a65fdd33 100644 --- a/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/transaction/TransactionInstance.kt +++ b/library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/transaction/TransactionInstance.kt @@ -1,3 +1,5 @@ +@file:Suppress("ImportOrdering") + package io.github.ustudiocompany.uframework.jdbc.transaction import io.github.airflux.commons.types.maybe.Maybe @@ -13,6 +15,8 @@ import io.github.ustudiocompany.uframework.jdbc.statement.JDBCPreparedStatement import io.github.ustudiocompany.uframework.jdbc.statement.JDBCPreparedStatementInstance import io.github.ustudiocompany.uframework.jdbc.statement.JDBCStatement import io.github.ustudiocompany.uframework.telemetry.logging.logger.slf4jextension.debug +import io.github.ustudiocompany.uframework.telemetry.logging.logger.slf4jextension.error +import io.github.ustudiocompany.uframework.telemetry.logging.logger.slf4jextension.warn import java.sql.Connection import java.sql.PreparedStatement import org.slf4j.LoggerFactory @@ -28,16 +32,23 @@ internal class TransactionInstance( override fun commit(): Maybe = Maybe.catch( catch = { exception -> - JDBCError(description = "Error while committing transaction", exception = exception) + val errorDescription = "Error while committing transaction." + logger.error { errorDescription } + JDBCError(description = errorDescription, exception = exception) }, block = { unwrappedConnection.commit() } ) override fun rollback(): Maybe = Maybe.catch( catch = { exception -> - JDBCError(description = "Error while rolling back transaction", exception = exception) + val errorDescription = "Error while rolling back transaction." + logger.error { errorDescription } + JDBCError(description = errorDescription, exception = exception) }, - block = { unwrappedConnection.rollback() } + block = { + logger.warn { "Transaction would be rolled back." } + unwrappedConnection.rollback() + } ) override fun close() { From bf77908351cc3fe472493b1e852d91d907e12c6a Mon Sep 17 00:00:00 2001 From: Ruslan Burdeniuk Date: Fri, 13 Feb 2026 15:22:02 +0200 Subject: [PATCH 3/3] DRMCDU-1534: update version to 0.0.5 --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 42c2821d..7d5a26fb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -28,7 +28,7 @@ allprojects { } } - version = "0.0.4" + version = "0.0.5" group = "io.github.ustudiocompany" configurations.all {