Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ android {

buildTypes {
debug {
// applicationIdSuffix = ".dev" // Temporarily disabled for one-time migration
applicationIdSuffix = ".dev"
resValue("string", "app_name", "Podometer-dev")
}
release {
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/java/com/podometer/data/db/SensorWindowDao.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ interface SensorWindowDao {
@Insert
suspend fun insert(window: SensorWindow)

/** Inserts multiple sensor window rows. */
@Insert
suspend fun insertAll(windows: List<SensorWindow>)

/**
* Returns all sensor windows whose [SensorWindow.timestamp] falls within
* [[startMs], [endMs]] (inclusive), ordered by timestamp ascending.
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/com/podometer/di/UseCaseModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 }
Expand Down Expand Up @@ -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,
)
},
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ class ExportDataUseCaseTest {

private class FakeSensorWindowDao : SensorWindowDao {
override suspend fun insert(window: SensorWindow) = Unit
override suspend fun insertAll(windows: List<SensorWindow>) = Unit
override fun getWindowsBetween(startMs: Long, endMs: Long): Flow<List<SensorWindow>> =
flowOf(emptyList())
override suspend fun getAllWindows(): List<SensorWindow> = emptyList()
Expand Down