From 0404f7be90af86a91de46f35d4eae4e8bb08c163 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sat, 19 Feb 2022 13:27:15 +0000 Subject: [PATCH] Added ability to get the number of entries and radios --- .../com/rtbishop/look4sat/framework/local/LocalSource.kt | 4 ++++ .../com/rtbishop/look4sat/framework/local/SatEntriesDao.kt | 4 ++++ .../com/rtbishop/look4sat/framework/local/SatRadiosDao.kt | 4 ++++ .../main/java/com/rtbishop/look4sat/data/DataRepository.kt | 4 ++++ .../src/main/java/com/rtbishop/look4sat/data/ILocalSource.kt | 5 +++++ .../java/com/rtbishop/look4sat/domain/IDataRepository.kt | 5 +++++ 6 files changed, 26 insertions(+) diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/local/LocalSource.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/LocalSource.kt index 1825675d..d0064860 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/local/LocalSource.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/LocalSource.kt @@ -41,6 +41,10 @@ class LocalSource( private val ioDispatcher: CoroutineDispatcher ) : ILocalSource { + override fun getEntriesNumber() = entriesDao.getEntriesNumber() + + override fun getRadiosNumber() = radiosDao.getRadiosNumber() + override suspend fun getEntriesWithModes(): List { val selectedCatnums = getEntriesSelection() val entriesWithModes = entriesDao.getEntriesWithModes().toDomainItems() diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/local/SatEntriesDao.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatEntriesDao.kt index 3a1f57b1..5380d995 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/local/SatEntriesDao.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatEntriesDao.kt @@ -20,10 +20,14 @@ package com.rtbishop.look4sat.framework.local import androidx.room.* import com.rtbishop.look4sat.framework.model.SatEntry import com.rtbishop.look4sat.framework.model.SatItem +import kotlinx.coroutines.flow.Flow @Dao interface SatEntriesDao { + @Query("SELECT COUNT(*) FROM entries") + fun getEntriesNumber(): Flow + @Transaction @Query("SELECT catnum, name FROM entries ORDER BY name ASC") suspend fun getEntriesWithModes(): List diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/local/SatRadiosDao.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatRadiosDao.kt index 35854e25..1f21416e 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/local/SatRadiosDao.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatRadiosDao.kt @@ -22,10 +22,14 @@ import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import com.rtbishop.look4sat.framework.model.SatRadio +import kotlinx.coroutines.flow.Flow @Dao interface SatRadiosDao { + @Query("SELECT COUNT(*) FROM radios") + fun getRadiosNumber(): Flow + @Query("SELECT * FROM radios WHERE catnum = :catnum AND isAlive = 1") suspend fun getRadios(catnum: Int): List diff --git a/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt b/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt index 6cdd84ab..b34a0bf5 100644 --- a/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt +++ b/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt @@ -45,6 +45,10 @@ class DataRepository( _updateState.value = DataState.Handled } + override fun getEntriesNumber() = localSource.getEntriesNumber() + + override fun getRadiosNumber() = localSource.getRadiosNumber() + override suspend fun getEntriesWithModes() = localSource.getEntriesWithModes() override suspend fun getSelectedEntries() = localSource.getSelectedEntries() diff --git a/core/src/main/java/com/rtbishop/look4sat/data/ILocalSource.kt b/core/src/main/java/com/rtbishop/look4sat/data/ILocalSource.kt index 031b6cb9..57652271 100644 --- a/core/src/main/java/com/rtbishop/look4sat/data/ILocalSource.kt +++ b/core/src/main/java/com/rtbishop/look4sat/data/ILocalSource.kt @@ -21,10 +21,15 @@ import com.rtbishop.look4sat.domain.model.SatEntry import com.rtbishop.look4sat.domain.model.SatItem import com.rtbishop.look4sat.domain.model.SatRadio import com.rtbishop.look4sat.domain.predict.Satellite +import kotlinx.coroutines.flow.Flow import java.io.InputStream interface ILocalSource { + fun getEntriesNumber(): Flow + + fun getRadiosNumber(): Flow + suspend fun getEntriesWithModes(): List suspend fun getSelectedEntries(): List diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/IDataRepository.kt b/core/src/main/java/com/rtbishop/look4sat/domain/IDataRepository.kt index a1aaa9b6..f85126b0 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/IDataRepository.kt +++ b/core/src/main/java/com/rtbishop/look4sat/domain/IDataRepository.kt @@ -21,6 +21,7 @@ import com.rtbishop.look4sat.domain.model.DataState import com.rtbishop.look4sat.domain.model.SatItem import com.rtbishop.look4sat.domain.model.SatRadio import com.rtbishop.look4sat.domain.predict.Satellite +import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow interface IDataRepository { @@ -29,6 +30,10 @@ interface IDataRepository { fun setUpdateStateHandled() + fun getEntriesNumber(): Flow + + fun getRadiosNumber(): Flow + suspend fun getEntriesWithModes(): List suspend fun getSelectedEntries(): List