Как правильно реализовать связь между хранилищем и его потребителем (kotlin / flow / broadcastChannels / coroutines / aliveata) - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть репозиторий, который выбирает некоторые данные из кэша или API в зависимости от доступности. Вот пример класса репозитория, который имеет метод для извлечения данных с нумерацией страниц

class Repository {

    suspend fun getData(offset: Int, limit: Int): List<Model> {
        val data = localRepo.getData(offset, limit)
                ?: networkRepo.getData(offset, limit).also {
                    localRepo.updateData(offset, limit)
                }
        return data
    }

}

Некоторые из этих возвращаемых данных могут измениться когда-нибудь в будущем, например, Модель в этом списке может быть устаревшей, и мне нужно убери это. Я хотел бы реализовать способ связи между хранилищем и его потребителями для любых таких изменений (изменения в модели, удаление модели и т. Д. c). Я могу использовать вещательные каналы, но это нарушает правило единого источника правды. Если я использую поток и выдаю результаты, то я не знаю, как бороться с нумерацией страниц вместе с потоком

...