Я написал следующий класс для доступа к своему репо, который включает в себя как удаленное, так и локальное репо.
public class VenuesRepoImpl implements VenuesRepo {
private VenuesLocalRepo venuesLocalRepo;
private VenuesRemoteRepo venuesRemoteRepo;
public VenuesRepoImpl(VenuesLocalRepo venuesLocalRepo, VenuesRemoteRepo venuesRemoteRepo) {
this.venuesLocalRepo = venuesLocalRepo;
this.venuesRemoteRepo = venuesRemoteRepo;
}
@Override
public Observable<List<Venue>> getAllVenues(String ll, int offset) {
return Observable.merge(venuesRemoteRepo.getAllVenues(ll, offset)
.doOnNext(venues -> venuesLocalRepo.addVenues(venues)).subscribeOn(Schedulers.io()),
venuesLocalRepo.getAllVenues().subscribeOn(Schedulers.io()));
}
@Override
public void deleteAllVenues() {
Completable.fromAction(() -> venuesLocalRepo.deleteAll()).subscribeOn(Schedulers.io());
}
}
, но Observable.merge
дублирует мой элемент, он имеет оба APIи дб.Как я могу получить доступ к элементам БД только тогда, когда API недоступен?