/
daaasris
/
HealthApp
Обзор
Документация
Войти
/
daaasris
/
HealthApp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/src/main/java/com/example/healtapp/data/database/StepDao.kt
69 строк
2 KB
daaastis
Initial commit
04 июн 2026, 18:19
04 июн 2026, 18:19
1f67131
Код
Авторство
О чём код?
package com.example.healtapp.data.database import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import kotlinx.coroutines.flow.Flow data class HourlySteps( val hour: String, val steps: Int ) data class DailySteps( val date: String, val totalSteps: Int ) @Dao interface StepDao { @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertStep(stepRecord: StepRecord) // Получение общей суммы шагов за сегодня с учетом локального времени @Query(""" SELECT COALESCE(SUM(steps), 0) FROM steps WHERE DATE(timestamp / 1000, 'unixepoch', 'localtime') = DATE('now', 'localtime') """) suspend fun getTodaySteps(): Int // Хронология по часам за сегодня для графиков (обычный запрос) @Query(""" SELECT strftime('%H', timestamp / 1000, 'unixepoch', 'localtime') as hour, COALESCE(SUM(steps), 0) as steps FROM steps WHERE DATE(timestamp / 1000, 'unixepoch', 'localtime') = DATE('now', 'localtime') GROUP BY hour ORDER BY hour """) suspend fun getHourlySteps(): List<HourlySteps> // Живой поток (Flow) для реактивного обновления часового графика при ходьбе @Query(""" SELECT strftime('%H', timestamp / 1000, 'unixepoch', 'localtime') as hour, COALESCE(SUM(steps), 0) as steps FROM steps WHERE DATE(timestamp / 1000, 'unixepoch', 'localtime') = DATE('now', 'localtime') GROUP BY hour ORDER BY hour """) fun getHourlyStepsFlow(): Flow<List<HourlySteps>> // Очистка старых логов (опционально) @Query("DELETE FROM steps WHERE timestamp < :beforeTime") suspend fun deleteOldSteps(beforeTime: Long) // Выборка шагов по дням за указанный период (с корректным локальным разделением суток) @Query(""" SELECT DATE(timestamp / 1000, 'unixepoch', 'localtime') as date, COALESCE(SUM(steps), 0) as totalSteps FROM steps WHERE timestamp >= :startTime GROUP BY DATE(timestamp / 1000, 'unixepoch', 'localtime') ORDER BY date DESC """) suspend fun getStepsByDateRange(startTime: Long): List<DailySteps> }