У меня есть SQL-запрос Android Room, который возвращает текучесть:
@Query("SELECT * FROM exercices WHERE lang = 'ru' AND id_exercice = :id")
Flowable<Exercices> getExercicesById(int id);
В моем репозитории мне нужно получить испускаемый элемент, затем изменить его логическое значение, а затем вызвать новый метод, который должен возвращать завершаемый. Вот что я пытаюсь:
@Override
public Completable setExerciseUsed(int id) {
return mDatabase.exerciseDao().getExercicesById(id)
.doOnNext(exercise -> exercise.setIs_used(1))
.flatMapCompletable(exercise ->
Completable.fromAction(() -> mFitnessDatabase.exerciseDao().addExercise(exercise)));
}
Также я пробовал:
Exercices e = mDatabase.exerciseDao().getExercicesById(id).blockingFirst();
e.setIs_used(0);
return Completable.fromAction(() -> mDatabase.exerciseDao().addExercise(e));
Но т не работает должным образом. Кажется, что поток испускает много элементов, и после подписки он застрянет в цикле.