From 971379b7736650f90dfc7224420cf5b4b95f331a Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sat, 1 Jan 2022 18:16:26 +0000 Subject: [PATCH] Added stale data cleanup on every data update --- .../look4sat/framework/local/EntriesDao.kt | 32 +++++++++++-------- .../framework/local/TransmittersDao.kt | 13 ++++++-- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/local/EntriesDao.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/EntriesDao.kt index a926b821..12fb6f78 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/local/EntriesDao.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/EntriesDao.kt @@ -29,32 +29,36 @@ interface EntriesDao { @Query("SELECT catnum, name, isSelected FROM entries ORDER BY name ASC") fun getSatelliteItems(): Flow> - @Query("SELECT * FROM entries WHERE isSelected = 1") - suspend fun getSelectedSatellites(): List - - @Transaction - suspend fun updateEntries(entries: List) { - val entriesSelection = getEntriesSelection() - insertEntries(entries) - restoreSelection(entriesSelection, true) - } - @Query("SELECT catnum FROM entries WHERE isSelected = 1") suspend fun getEntriesSelection(): List + @Query("SELECT * FROM entries WHERE isSelected = 1") + suspend fun getSelectedSatellites(): List + @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertEntries(entries: List) @Transaction - suspend fun restoreSelection(catnums: List, isSelected: Boolean) { - updateEntriesSelection(catnums, isSelected) + suspend fun updateEntries(entries: List) { + val entriesSelection = getEntriesSelection() + deleteEntries() + insertEntries(entries) + restoreSelection(entriesSelection, true) } + @Query("UPDATE entries SET isSelected = :isSelected WHERE catnum = :catnum") + suspend fun updateEntrySelection(catnum: Int, isSelected: Boolean) + @Transaction suspend fun updateEntriesSelection(catnums: List, isSelected: Boolean) { catnums.forEach { catnum -> updateEntrySelection(catnum, isSelected) } } - @Query("UPDATE entries SET isSelected = :isSelected WHERE catnum = :catnum") - suspend fun updateEntrySelection(catnum: Int, isSelected: Boolean) + @Transaction + suspend fun restoreSelection(catnums: List, isSelected: Boolean) { + updateEntriesSelection(catnums, isSelected) + } + + @Query("DELETE FROM entries") + suspend fun deleteEntries() } diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/local/TransmittersDao.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/TransmittersDao.kt index 08ce06da..a852a666 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/local/TransmittersDao.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/TransmittersDao.kt @@ -23,9 +23,18 @@ import com.rtbishop.look4sat.framework.model.Transmitter @Dao interface TransmittersDao { - @Query("SELECT * FROM transmitters WHERE catnum = :catnum") + @Query("SELECT * FROM transmitters WHERE catnum = :catnum AND isAlive = 1") suspend fun getTransmitters(catnum: Int): List @Insert(onConflict = OnConflictStrategy.REPLACE) - suspend fun updateTransmitters(transmitters: List) + suspend fun insertTransmitters(transmitters: List) + + @Transaction + suspend fun updateTransmitters(transmitters: List) { + deleteTransmitters() + insertTransmitters(transmitters) + } + + @Query("DELETE FROM transmitters") + suspend fun deleteTransmitters() }