Skip to content

Commit d8aff1d

Browse files
authored
DRMCDU-1534: log sql and transaction errors. update version to 0.0.5 (#23)
* log sql before executing * add error logs into commit and rollback transaction functionality * update version to 0.0.5
1 parent a1aebc4 commit d8aff1d

5 files changed

Lines changed: 36 additions & 8 deletions

File tree

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ allprojects {
2828
}
2929
}
3030

31-
version = "0.0.4"
31+
version = "0.0.5"
3232
group = "io.github.ustudiocompany"
3333

3434
configurations.all {

library/jdbc/core/api/jdbc-core-library.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public final class io/github/ustudiocompany/uframework/jdbc/sql/ParametrizedSql
7272
public synthetic fun <init> (Ljava/lang/String;Ljava/util/Map;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
7373
public final fun getParameters ()Ljava/util/Map;
7474
public final fun getValue ()Ljava/lang/String;
75+
public fun toString ()Ljava/lang/String;
7576
}
7677

7778
public final class io/github/ustudiocompany/uframework/jdbc/sql/ParametrizedSql$Companion {

library/jdbc/core/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ plugins {
77

88
dependencies {
99
implementation(project(":failure-library"))
10+
implementation(project(":logging-slf4j-extension-library"))
1011

1112
implementation(libs.airflux.commons.types) { isChanging = true }
1213
implementation(libs.postgresql)
14+
implementation(libs.slf4j.api)
15+
implementation(libs.logback.classic)
1316

1417
/* Tests */
1518
testImplementation(project(":jdbc-kotest-matchers-library"))

library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/sql/ParametrizedSql.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ public class ParametrizedSql private constructor(
55
public val parameters: Map<String, Int>
66
) {
77

8+
override fun toString(): String {
9+
return "Sql: '${value.trim()}' \n " +
10+
"Parameters: ${parameters.entries.joinToString(", ") { "${it.key}: ${it.value}" }}"
11+
}
12+
813
public companion object {
914
private const val PARAMETER_NAME_PLACEHOLDER = "?"
1015
private const val PREFIX_PARAMETER_NAME = ':'

library/jdbc/core/src/main/kotlin/io/github/ustudiocompany/uframework/jdbc/transaction/TransactionInstance.kt

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:Suppress("ImportOrdering")
2+
13
package io.github.ustudiocompany.uframework.jdbc.transaction
24

35
import io.github.airflux.commons.types.maybe.Maybe
@@ -12,28 +14,41 @@ import io.github.ustudiocompany.uframework.jdbc.statement.JDBCNamedPreparedState
1214
import io.github.ustudiocompany.uframework.jdbc.statement.JDBCPreparedStatement
1315
import io.github.ustudiocompany.uframework.jdbc.statement.JDBCPreparedStatementInstance
1416
import io.github.ustudiocompany.uframework.jdbc.statement.JDBCStatement
17+
import io.github.ustudiocompany.uframework.telemetry.logging.logger.slf4jextension.debug
18+
import io.github.ustudiocompany.uframework.telemetry.logging.logger.slf4jextension.error
19+
import io.github.ustudiocompany.uframework.telemetry.logging.logger.slf4jextension.warn
1520
import java.sql.Connection
1621
import java.sql.PreparedStatement
22+
import org.slf4j.LoggerFactory
1723

1824
internal class TransactionInstance(
1925
private val unwrappedConnection: Connection,
2026
) : Transaction, JDBCConnection {
2127

28+
private val logger = LoggerFactory.getLogger(TransactionInstance::class.java)
29+
2230
override val connection: JDBCConnection
2331
get() = this
2432

2533
override fun commit(): Maybe<JDBCError> = Maybe.catch(
2634
catch = { exception ->
27-
JDBCError(description = "Error while committing transaction", exception = exception)
35+
val errorDescription = "Error while committing transaction."
36+
logger.error { errorDescription }
37+
JDBCError(description = errorDescription, exception = exception)
2838
},
2939
block = { unwrappedConnection.commit() }
3040
)
3141

3242
override fun rollback(): Maybe<JDBCError> = Maybe.catch(
3343
catch = { exception ->
34-
JDBCError(description = "Error while rolling back transaction", exception = exception)
44+
val errorDescription = "Error while rolling back transaction."
45+
logger.error { errorDescription }
46+
JDBCError(description = errorDescription, exception = exception)
3547
},
36-
block = { unwrappedConnection.rollback() }
48+
block = {
49+
logger.warn { "Transaction would be rolled back." }
50+
unwrappedConnection.rollback()
51+
}
3752
)
3853

3954
override fun close() {
@@ -48,18 +63,22 @@ internal class TransactionInstance(
4863
override fun preparedStatement(
4964
sql: String,
5065
timeout: JDBCStatement.Timeout
51-
): JDBCResult<JDBCPreparedStatement> =
52-
prepareStatement(sql, timeout)
66+
): JDBCResult<JDBCPreparedStatement> {
67+
logger.debug { "Executing Query: \n $sql" }
68+
return prepareStatement(sql, timeout)
5369
.map { statement -> JDBCPreparedStatementInstance(statement = statement) }
70+
}
5471

5572
override fun namedPreparedStatement(
5673
sql: ParametrizedSql,
5774
timeout: JDBCStatement.Timeout
58-
): JDBCResult<JDBCNamedPreparedStatement> =
59-
prepareStatement(sql.value, timeout)
75+
): JDBCResult<JDBCNamedPreparedStatement> {
76+
logger.debug { "Executing ParametrizedSql: \n $sql" }
77+
return prepareStatement(sql.value, timeout)
6078
.map { statement ->
6179
JDBCNamedPreparedStatementInstance(parameters = sql.parameters, statement = statement)
6280
}
81+
}
6382

6483
private fun prepareStatement(
6584
sql: String,

0 commit comments

Comments
 (0)