У меня есть 3 таблицы: Article, User и Category. В таблице Article хранятся все статьи, в User - пользователи приложения, и Category - категории статей. Структура таблицы Article
title-> String
content-> String
category -> Category.id
autor ->User.id
Мне необходимо получить все статьи, а также информацию о том, к какой категории она принадлежит и об авторе данной статьи. Все эти данные находятся в локальной БД и должны быть отображены в recyclerView.
Я написал 3 метода, которые извлекают данные из локальной БД и возвращают Observable:
public Observable<List<Article>> getArticles() {
return articleSqlRepository.query(new articlesAllSpecification());
}
public Observable<User> geUser(String userId) {
// Получить информацию об авторе статьи, используя его id
return userSqlRepository.query(new UserByIdSpecification(userId));
}
public Observable<Category> getCategory(String categoryId) {
// Получить информацию о категории
return categorySqlRepository.query(new CategoryByIdSpecification(categoryId));
}
Далее я вызываю метод, который должен вернуть список статей List. Но столкнулся с проблемой, что не знаю как правильно объединить запросы. Дело в том что я сначала должен получить список всех статей, а потом для каждой конкретной статьи найти информацию о ее категории и авторе.
public void getArticleItems()
{
// Список статей, для отображения в RecyclerView
List<ArticleItem> articleItemLists = new ArrayList<>();
// Получить список всех статей
getArticles()
// Последовательно обработать все статьи
.flatMap(Observable::from)
// Что делать дальше?
}
И вот проблема: какой оператор использовать чтобы объединить 2 Observable (getUser() и getCategory()) чтобы можно было обратиться к объекту article из предыдущего результата запроса.