feat(android): Room foundation — AppDatabase + TypeConverters + Gradle plugin
M8 phase 4.1. Pre-flight research (per the feedback_m8_preflight_research
rule) found two needed adjustments to the original plan:
1. Room 2.6.1 -> 2.8.4. Room 2.6.1 (Oct 2023) predates Kotlin 2.0
mainstream; Room 2.7+ explicitly supports Kotlin 2.0+ and KSP2.
Room 2.8.4 is current stable; minSdk 23 (we're at 26) and AGP 8.4+
(we're on 9), both compatible.
2. Use the androidx.room Gradle plugin's `room { schemaDirectory(...) }`
block instead of the legacy `ksp { arg("room.schemaLocation", ...) }`
pattern. Cleaner schema-export plumbing in Room 2.7+. Audit-deferred
item; trigger condition (first Room entity) met here.
Files:
- cache/db/AppDatabase.kt — @Database stub, schemaVersion 1
- cache/db/TypeConverters.kt — Instant <-> Long, CacheSource enum
- cache/db/DatabaseModule.kt — Hilt-provided AppDatabase singleton
- cache/db/entities/SyncMetadataEntity.kt — pulled forward from
Task 4.2 slice 7 to satisfy Room's "needs >=1 entity" compile check;
its consumer (SyncController) lands in Phase 12.4
- cache/db/dao/SyncMetadataDao.kt — minimal observe/get/upsert
- libs.versions.toml — Room 2.8.4, androidx-room plugin alias
- app/build.gradle.kts — apply androidx.room plugin, add room {}
block, drop ksp room.schemaLocation arg
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,7 +14,7 @@ hilt = "2.59.2"
|
||||
hilt-androidx = "1.2.0"
|
||||
compose-bom = "2026.05.01"
|
||||
nav-compose = "2.8.3"
|
||||
room = "2.6.1"
|
||||
room = "2.8.4"
|
||||
retrofit = "2.11.0"
|
||||
okhttp = "4.12.0"
|
||||
kotlinx-serialization = "1.7.3"
|
||||
@@ -81,6 +81,7 @@ compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" }
|
||||
|
||||
[plugins]
|
||||
android-application = { id = "com.android.application", version.ref = "agp" }
|
||||
androidx-room = { id = "androidx.room", version.ref = "room" }
|
||||
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
||||
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
|
||||
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
|
||||
|
||||
Reference in New Issue
Block a user