@Lordao

Как проверить есть ли данные в БД с помощью rxjava2?

Есть метод, который возвращает Flowable<List<Item>>. Из-за take(1) мы получаем список, но перестаем получать обновления из БД. Если его убрать и при этом в БД не будет никаких записей, то список в итоге не вернётся.

Каким образом можно проверить есть ли в БД записи и в случае отсутствия получить данные от сервера и вернуть затем уже локальный список?

fun loadItems(forceRemote: Boolean): Flowable<List<Item>> {
return if (forceRemote) {
            loadRemoteData()
        } else {
         itemDataSource.loadLocalItems().take(1).filter { !it.isEmpty() }.switchIfEmpty(loadRemoteData())
       }
}

private fun loadRemoteData(): Flowable<List<Item>> {
        return itemDataSource.loadRemoteItems().switchMap {
            itemsDataSource.addItems(it).andThen(itemDataSource.loadLocalItems())
        }
    }
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Kotlin
Android developer at Yandex
БД должна отдавать пустой список, если нет данных. Дальше по пустоте списка можно триггерить поход на сервак.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы