diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cff1192..95010a1 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -53,7 +53,7 @@ android { buildTypes { debug { - // applicationIdSuffix = ".dev" // Temporarily disabled for one-time migration + applicationIdSuffix = ".dev" resValue("string", "app_name", "Podometer-dev") } release { diff --git a/app/src/main/java/com/podometer/data/db/SensorWindowDao.kt b/app/src/main/java/com/podometer/data/db/SensorWindowDao.kt index 53995e3..5f74c84 100644 --- a/app/src/main/java/com/podometer/data/db/SensorWindowDao.kt +++ b/app/src/main/java/com/podometer/data/db/SensorWindowDao.kt @@ -19,6 +19,10 @@ interface SensorWindowDao { @Insert suspend fun insert(window: SensorWindow) + /** Inserts multiple sensor window rows. */ + @Insert + suspend fun insertAll(windows: List) + /** * Returns all sensor windows whose [SensorWindow.timestamp] falls within * [[startMs], [endMs]] (inclusive), ordered by timestamp ascending. diff --git a/app/src/main/java/com/podometer/di/UseCaseModule.kt b/app/src/main/java/com/podometer/di/UseCaseModule.kt index 99f1f77..7755994 100644 --- a/app/src/main/java/com/podometer/di/UseCaseModule.kt +++ b/app/src/main/java/com/podometer/di/UseCaseModule.kt @@ -112,10 +112,12 @@ abstract class UseCaseModule { stepDao: StepDao, activityTransitionDao: ActivityTransitionDao, cyclingSessionDao: CyclingSessionDao, + sensorWindowDao: SensorWindowDao, ): ImportDataUseCase = ImportDataUseCase( stepDao = stepDao, activityTransitionDao = activityTransitionDao, cyclingSessionDao = cyclingSessionDao, + sensorWindowDao = sensorWindowDao, ) } } diff --git a/app/src/main/java/com/podometer/domain/usecase/ImportDataUseCase.kt b/app/src/main/java/com/podometer/domain/usecase/ImportDataUseCase.kt index 1f7d2bc..9d65c3f 100644 --- a/app/src/main/java/com/podometer/domain/usecase/ImportDataUseCase.kt +++ b/app/src/main/java/com/podometer/domain/usecase/ImportDataUseCase.kt @@ -7,6 +7,8 @@ import com.podometer.data.db.CyclingSession import com.podometer.data.db.CyclingSessionDao import com.podometer.data.db.DailySummary import com.podometer.data.db.HourlyStepAggregate +import com.podometer.data.db.SensorWindow +import com.podometer.data.db.SensorWindowDao import com.podometer.data.db.StepDao import com.podometer.data.export.ExportData import kotlinx.serialization.json.Json @@ -20,11 +22,13 @@ import kotlinx.serialization.json.Json * @param stepDao DAO for daily summaries and hourly aggregates. * @param activityTransitionDao DAO for activity transitions. * @param cyclingSessionDao DAO for cycling sessions. + * @param sensorWindowDao DAO for raw sensor classifier windows. */ class ImportDataUseCase( private val stepDao: StepDao, private val activityTransitionDao: ActivityTransitionDao, private val cyclingSessionDao: CyclingSessionDao, + private val sensorWindowDao: SensorWindowDao, ) { private val json = Json { ignoreUnknownKeys = true } @@ -84,5 +88,17 @@ class ImportDataUseCase( ) }, ) + + sensorWindowDao.insertAll( + data.sensorWindows.map { w -> + SensorWindow( + id = 0, + timestamp = w.timestamp, + magnitudeVariance = w.magnitudeVariance, + stepFrequencyHz = w.stepFrequencyHz, + stepCount = w.stepCount, + ) + }, + ) } } diff --git a/app/src/test/java/com/podometer/domain/usecase/ExportDataUseCaseTest.kt b/app/src/test/java/com/podometer/domain/usecase/ExportDataUseCaseTest.kt index 1c20efe..35d05d3 100644 --- a/app/src/test/java/com/podometer/domain/usecase/ExportDataUseCaseTest.kt +++ b/app/src/test/java/com/podometer/domain/usecase/ExportDataUseCaseTest.kt @@ -116,6 +116,7 @@ class ExportDataUseCaseTest { private class FakeSensorWindowDao : SensorWindowDao { override suspend fun insert(window: SensorWindow) = Unit + override suspend fun insertAll(windows: List) = Unit override fun getWindowsBetween(startMs: Long, endMs: Long): Flow> = flowOf(emptyList()) override suspend fun getAllWindows(): List = emptyList()