Skip to content

Commit 6a23804

Browse files
committed
build: Update dependencies and refactor SqlDelightDbHolder logging
- Bump `kotlin` from 2.3.10 to 2.3.20 in `libs.versions.toml`. - Bump `kermit` from 2.0.8 to 2.1.0 in `libs.versions.toml`. - Add a mandatory `logger` property to the `SqlDelightDbHolder` interface and implement it across all platform-specific database holder classes. - Refactor `SqlDelightDbHolder.createSchema()` to use the instance-specific logger instead of a static companion object tag. - Convert `DateAdapter` from a class to an internal object to optimize adapter reuse in `DbSchema.kt`. - Simplify `createQueryWrapper` in `DbSchema.kt` by using the new `DateAdapter` object.
1 parent ad48d5d commit 6a23804

10 files changed

Lines changed: 25 additions & 23 deletions

File tree

core/data/db-sqldelight/src/androidHostTest/kotlin/com/softartdev/notedelight/JdbcDatabaseTestHolder.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.softartdev.notedelight
22

33
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
4+
import co.touchlab.kermit.Logger
45
import com.softartdev.notedelight.db.NoteDb
56
import com.softartdev.notedelight.db.SqlDelightDbHolder
67
import com.softartdev.notedelight.db.createQueryWrapper
78

89
class JdbcDatabaseTestHolder: SqlDelightDbHolder {
10+
override val logger = Logger.withTag("JdbcDatabaseTestHolder")
911
override val driver = JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY)
1012
override val noteDb: NoteDb = createQueryWrapper(driver)
1113
override val noteQueries = noteDb.noteQueries

core/data/db-sqldelight/src/androidMain/kotlin/com/softartdev/notedelight/db/AndroidDatabaseHolder.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import app.cash.sqldelight.async.coroutines.synchronous
88
import app.cash.sqldelight.db.QueryResult
99
import app.cash.sqldelight.db.SqlSchema
1010
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
11+
import co.touchlab.kermit.Logger
1112
import com.commonsware.cwac.saferoom.SafeHelperFactory
1213
import com.softartdev.notedelight.repository.SafeRepo
1314

@@ -17,6 +18,7 @@ class AndroidDatabaseHolder(
1718
schema: SqlSchema<QueryResult.Value<Unit>> = NoteDb.Schema.synchronous(),
1819
name: String? = SafeRepo.DB_NAME
1920
) : SqlDelightDbHolder {
21+
override val logger = Logger.withTag("AndroidDatabaseHolder")
2022

2123
private val openHelper: SupportSQLiteOpenHelper = SafeHelperFactory
2224
.fromUser(SpannableStringBuilder.valueOf(passphrase))

core/data/db-sqldelight/src/commonMain/kotlin/com/softartdev/notedelight/db/DateAdapter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import kotlinx.datetime.toLocalDateTime
1010
import kotlin.time.ExperimentalTime
1111
import kotlin.time.Instant
1212

13-
class DateAdapter : ColumnAdapter<LocalDateTime, Long> {
13+
internal object DateAdapter : ColumnAdapter<LocalDateTime, Long> {
1414

1515
override fun encode(value: LocalDateTime): Long = value
1616
.toInstant(TimeZone.currentSystemDefault())
@@ -19,4 +19,4 @@ class DateAdapter : ColumnAdapter<LocalDateTime, Long> {
1919
override fun decode(databaseValue: Long): LocalDateTime = Instant
2020
.fromEpochMilliseconds(epochMilliseconds = databaseValue)
2121
.toLocalDateTime(TimeZone.currentSystemDefault())
22-
}
22+
}

core/data/db-sqldelight/src/commonMain/kotlin/com/softartdev/notedelight/db/DbSchema.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ import com.softartdev.notedelight.shared.db.NoteQueries
66
import kotlinx.datetime.LocalDateTime
77
import com.softartdev.notedelight.model.Note as NoteModel
88

9-
fun createQueryWrapper(sqlDriver: SqlDriver): NoteDb {
10-
val dateColumnAdapter = DateAdapter()
11-
val noteColumnAdapter = Note.Adapter(dateColumnAdapter, dateColumnAdapter)
12-
return NoteDb(driver = sqlDriver, noteAdapter = noteColumnAdapter)
13-
}
9+
fun createQueryWrapper(sqlDriver: SqlDriver): NoteDb = NoteDb(
10+
driver = sqlDriver,
11+
noteAdapter = Note.Adapter(dateCreatedAdapter = DateAdapter, dateModifiedAdapter = DateAdapter)
12+
)
1413

1514
object TestSchema {
1615

core/data/db-sqldelight/src/commonMain/kotlin/com/softartdev/notedelight/db/SqlDelightDbHolder.kt

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,16 @@ import co.touchlab.kermit.Logger
66
import com.softartdev.notedelight.shared.db.NoteQueries
77

88
interface SqlDelightDbHolder : DatabaseHolder {
9+
val logger: Logger
910
val driver: SqlDriver
1011
val noteDb: NoteDb
1112
val noteQueries: NoteQueries
1213

13-
suspend fun createSchema() {
14-
try {
15-
Logger.d(LOG_TAG) { "Creating database schema" }
16-
NoteDb.Schema.awaitCreate(driver)
17-
Logger.d(LOG_TAG) { "Database schema created" }
18-
} catch (t: Throwable) {
19-
Logger.e(t, LOG_TAG) { "Error creating database schema" }
20-
}
21-
}
22-
23-
companion object {
24-
private const val LOG_TAG: String = "SqlDelightDbHolder"
14+
suspend fun createSchema() = try {
15+
logger.d { "Creating database schema" }
16+
NoteDb.Schema.awaitCreate(driver)
17+
logger.d { "Database schema created" }
18+
} catch (t: Throwable) {
19+
logger.e(t) { "Error creating database schema" }
2520
}
2621
}

core/data/db-sqldelight/src/iosMain/kotlin/com/softartdev/notedelight/db/IosDatabaseHolder.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import app.cash.sqldelight.db.SqlDriver
66
import app.cash.sqldelight.db.SqlSchema
77
import app.cash.sqldelight.driver.native.NativeSqliteDriver
88
import app.cash.sqldelight.driver.native.wrapConnection
9+
import co.touchlab.kermit.Logger
910
import co.touchlab.sqliter.DatabaseConfiguration
1011
import com.softartdev.notedelight.repository.SafeRepo
1112
import com.softartdev.notedelight.shared.db.NoteQueries
@@ -16,6 +17,7 @@ class IosDatabaseHolder(
1617
name: String = SafeRepo.DB_NAME,
1718
schema: SqlSchema<QueryResult.Value<Unit>> = NoteDb.Schema.synchronous()
1819
) : SqlDelightDbHolder {
20+
override val logger = Logger.withTag("IosDatabaseHolder")
1921
private val configuration = createDatabaseConfiguration(name, schema, key, rekey)
2022
override val driver: SqlDriver = NativeSqliteDriver(configuration)
2123
override val noteDb: NoteDb = createQueryWrapper(driver)

core/data/db-sqldelight/src/jvmMain/kotlin/com/softartdev/notedelight/db/JdbcDatabaseHolder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import java.sql.SQLException
1111
import java.util.Properties
1212

1313
class JdbcDatabaseHolder(props: Properties = Properties()) : SqlDelightDbHolder {
14-
private val logger = Logger.withTag(this@JdbcDatabaseHolder::class.simpleName.toString())
14+
override val logger = Logger.withTag(this@JdbcDatabaseHolder::class.simpleName.toString())
1515
private val dbPath = FilePathResolver().invoke()
1616

1717
val jdbcUrl: String = buildJdbcUrl(dbPath, props)

core/data/db-sqldelight/src/wasmJsMain/kotlin/com/softartdev/notedelight/db/WebDatabaseHolder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import com.softartdev.notedelight.shared.db.NoteQueries
99
import org.w3c.dom.Worker
1010

1111
class WebDatabaseHolder(private val key: String? = null) : SqlDelightDbHolder {
12-
private val logger = Logger.withTag("WebDatabaseHolder")
12+
override val logger = Logger.withTag("WebDatabaseHolder")
1313
override val driver: SqlDriver = WebWorkerDriver(worker = jsWorker())
1414
override val noteDb: NoteDb = createQueryWrapper(driver)
1515
override val noteQueries: NoteQueries = noteDb.noteQueries

core/data/db-sqldelight/src/wasmJsTest/kotlin/com/softartdev/notedelight/db/TestWebDatabaseHolder.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ package com.softartdev.notedelight.db
44

55
import app.cash.sqldelight.db.SqlDriver
66
import app.cash.sqldelight.driver.worker.createDefaultWebWorkerDriver
7+
import co.touchlab.kermit.Logger
78
import com.softartdev.notedelight.shared.db.NoteQueries
89

910
/**
1011
* Test-specific WebDatabaseHolder that always uses the default SQLDelight worker.
1112
* This avoids webpack resolution issues with the custom OPFS worker script in test environments.
1213
*/
1314
class TestWebDatabaseHolder : SqlDelightDbHolder {
15+
override val logger = Logger.withTag("TestWebDatabaseHolder")
1416
override val driver: SqlDriver = createDefaultWebWorkerDriver()
1517
override val noteDb: NoteDb = createQueryWrapper(driver)
1618
override val noteQueries: NoteQueries = noteDb.noteQueries

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[versions]
22
jdk = "17"
33
agp = "9.1.0"
4-
kotlin = "2.3.10"
4+
kotlin = "2.3.20"
55
compileSdk = "36"
66
targetSdk = "36"
77
minSdk = "23"
@@ -18,7 +18,7 @@ koin-bom = "4.1.1"
1818
kotlinx-serialization = "1.10.0"
1919
kotlinx-datetime = "0.7.1"
2020
kotlinx-browser = "0.5.0"
21-
kermit = "2.0.8"
21+
kermit = "2.1.0"
2222
materialThemePrefs = "1.0.0"
2323
composeMaterial3 = "1.9.0"
2424
composeMaterialIconsExtended = "1.7.3"

0 commit comments

Comments
 (0)