Я использую комнату базы данных и RxJava.Мне нужно удалить все записи из таблицы, а затем вставить новый набор записей.
Способ сделать это будет следующим:
@Transaction
fun clearAndInsert(records: List<Whatever>): Disposable {
deleteRecords()
insertRecords(records)
}
deleteRecords()
возвращает одноразовые и insertRecords()
возвращает одноразовый.Тем не менее, я хотел бы вернуть один Disposable из этого метода.Хотя я мог бы вернуть CompositeDisposable.Итак, что я думаю о:
@Transaction
override fun clearAndInsertTags(records: List<Whatever>): Disposable {
return Observable.fromCallable { subscriptionsDao.deleteRecords() }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
insertRecords(records)
})
}
Это вернет одноразовые.Однако будет ли это сделка?Допустим, по какой-то причине insertRecords()
не удалось и вызывается onError.Комната фактически вернула бы удаление всех записей для меня?Если нет, каков будет правильный путь достижения этого?Или это верный CompositeDisposable
верный путь?