Added stale data cleanup on every data update

This commit is contained in:
Arty Bishop committed 2022-01-09 18:01:48 +00:00
1 parent ad3bdff823
commit 971379b773
2 files changed
+29 -16

No files matched your search

@@ -29,32 +29,36 @@ interface EntriesDao {
@Query("SELECT catnum, name, isSelected FROM entries ORDER BY name ASC") @Query("SELECT catnum, name, isSelected FROM entries ORDER BY name ASC")
fun getSatelliteItems(): Flow<List<SatItem>> fun getSatelliteItems(): Flow<List<SatItem>>
@Query("SELECT * FROM entries WHERE isSelected = 1")
suspend fun getSelectedSatellites(): List<SatEntry>
@Transaction
suspend fun updateEntries(entries: List<SatEntry>) {
val entriesSelection = getEntriesSelection()
insertEntries(entries)
restoreSelection(entriesSelection, true)
}
@Query("SELECT catnum FROM entries WHERE isSelected = 1") @Query("SELECT catnum FROM entries WHERE isSelected = 1")
suspend fun getEntriesSelection(): List<Int> suspend fun getEntriesSelection(): List<Int>
@Query("SELECT * FROM entries WHERE isSelected = 1")
suspend fun getSelectedSatellites(): List<SatEntry>
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertEntries(entries: List<SatEntry>) suspend fun insertEntries(entries: List<SatEntry>)
@Transaction @Transaction
suspend fun restoreSelection(catnums: List<Int>, isSelected: Boolean) { suspend fun updateEntries(entries: List<SatEntry>) {
updateEntriesSelection(catnums, isSelected) 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 @Transaction
suspend fun updateEntriesSelection(catnums: List<Int>, isSelected: Boolean) { suspend fun updateEntriesSelection(catnums: List<Int>, isSelected: Boolean) {
catnums.forEach { catnum -> updateEntrySelection(catnum, isSelected) } catnums.forEach { catnum -> updateEntrySelection(catnum, isSelected) }
} }
@Query("UPDATE entries SET isSelected = :isSelected WHERE catnum = :catnum") @Transaction
suspend fun updateEntrySelection(catnum: Int, isSelected: Boolean) suspend fun restoreSelection(catnums: List<Int>, isSelected: Boolean) {
updateEntriesSelection(catnums, isSelected)
}
@Query("DELETE FROM entries")
suspend fun deleteEntries()
} }
@@ -23,9 +23,18 @@ import com.rtbishop.look4sat.framework.model.Transmitter
@Dao @Dao
interface TransmittersDao { 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<Transmitter> suspend fun getTransmitters(catnum: Int): List<Transmitter>
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun updateTransmitters(transmitters: List<Transmitter>) suspend fun insertTransmitters(transmitters: List<Transmitter>)
@Transaction
suspend fun updateTransmitters(transmitters: List<Transmitter>) {
deleteTransmitters()
insertTransmitters(transmitters)
}
@Query("DELETE FROM transmitters")
suspend fun deleteTransmitters()
} }