mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Created satellite DataSources and Repository
This commit is contained in:
1 parent
3db474c763
commit
d0569f4645
10 files changed
+228
-25
No files matched your search
@@ -40,9 +40,33 @@ interface SatelliteDao {
|
||||
@Query("SELECT catNum FROM entries WHERE isSelected = 1")
|
||||
suspend fun getSelectedCatNums(): List<Int>
|
||||
|
||||
@Transaction
|
||||
suspend fun updateEntries(entries: List<SatEntry>) {
|
||||
val selectedCatNums = getSelectedCatNums()
|
||||
insertEntries(entries)
|
||||
restoreEntriesSelection(selectedCatNums, true)
|
||||
}
|
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
suspend fun insertEntries(entries: List<SatEntry>)
|
||||
|
||||
@Transaction
|
||||
suspend fun restoreEntriesSelection(catNums: List<Int>, isSelected: Boolean) {
|
||||
clearEntriesSelection()
|
||||
catNums.forEach { catNum -> updateEntrySelection(catNum, isSelected) }
|
||||
}
|
||||
|
||||
@Query("UPDATE entries SET isSelected = 0")
|
||||
suspend fun clearEntriesSelection()
|
||||
|
||||
@Query("UPDATE entries SET isSelected = :isSelected WHERE catNum = :catNum")
|
||||
suspend fun updateEntrySelection(catNum: Int, isSelected: Boolean)
|
||||
|
||||
@Transaction
|
||||
suspend fun updateEntriesSelection(catNums: List<Int>, isSelected: Boolean) {
|
||||
catNums.forEach { catNum -> updateEntrySelection(catNum, isSelected) }
|
||||
}
|
||||
|
||||
@Transaction
|
||||
suspend fun updateTransmitters(transmitters: List<SatTrans>) {
|
||||
deleteTransmitters()
|
||||
@@ -54,21 +78,4 @@ interface SatelliteDao {
|
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
suspend fun insertTransmitters(transmitters: List<SatTrans>)
|
||||
|
||||
@Transaction
|
||||
suspend fun restoreEntriesSelection(catNums: List<Int>, isSelected: Boolean) {
|
||||
clearEntriesSelection()
|
||||
catNums.forEach { catNum -> updateEntrySelection(catNum, isSelected) }
|
||||
}
|
||||
|
||||
@Transaction
|
||||
suspend fun updateEntriesSelection(catNums: List<Int>, isSelected: Boolean) {
|
||||
catNums.forEach { catNum -> updateEntrySelection(catNum, isSelected) }
|
||||
}
|
||||
|
||||
@Query("UPDATE entries SET isSelected = 0")
|
||||
suspend fun clearEntriesSelection()
|
||||
|
||||
@Query("UPDATE entries SET isSelected = :isSelected WHERE catNum = :catNum")
|
||||
suspend fun updateEntrySelection(catNum: Int, isSelected: Boolean)
|
||||
}
|
||||
@@ -62,7 +62,7 @@ class SatelliteRepo @Inject constructor(
|
||||
runCatching {
|
||||
resolver.openInputStream(uri)?.use { stream ->
|
||||
val entries = importEntriesFromStreams(listOf(stream))
|
||||
insertEntriesAndRestoreSelection(entries)
|
||||
satelliteDao.updateEntries(entries)
|
||||
}
|
||||
}.onFailure { throw it }
|
||||
}
|
||||
@@ -81,7 +81,7 @@ class SatelliteRepo @Inject constructor(
|
||||
private suspend fun importEntriesFromSources(sources: List<TleSource>) {
|
||||
val streams = getStreamsForSources(sources)
|
||||
val entries = importEntriesFromStreams(streams)
|
||||
insertEntriesAndRestoreSelection(entries)
|
||||
satelliteDao.updateEntries(entries)
|
||||
}
|
||||
|
||||
private suspend fun importTransmitters() {
|
||||
@@ -124,10 +124,4 @@ class SatelliteRepo @Inject constructor(
|
||||
}
|
||||
return importedEntries
|
||||
}
|
||||
|
||||
private suspend fun insertEntriesAndRestoreSelection(entries: List<SatEntry>) {
|
||||
val selectedCatNums = satelliteDao.getSelectedCatNums()
|
||||
satelliteDao.insertEntries(entries)
|
||||
satelliteDao.restoreEntriesSelection(selectedCatNums, true)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user