Я использую базу данных комнаты для хранения комментариев и RxJava в качестве слушателя, чтобы выполнять некоторые действия при изменении базы данных.
Я хочу не вызывать обратный вызов при вызове удаления в таблице, только при вызове вставки.
На данный момент я обнаружил, что в библиотеке Room есть triggers
, которые вызываются для delete
, insert
и update
таблицы, которые, в свою очередь, вызывают методы RxJava.
Есть ли способ удалить триггер delete
и получить обратные вызовы только для методов insert
и update
?
Вот мой комментарийDAO:
@Query("SELECT * FROM comments" )
fun getAll(): Flowable<List<Comment>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(comment: Comment)
@Delete
fun delete(comment: Comment)
И мои функции обратного вызова RxJava:
/**
* Inserts comment into comment database
*
* @param object that's going to be inserted to the database
*/
fun saveComment(comment: Comment) {
Observable.just(comment).subscribeOn(Schedulers.io()).map({ comment1 -> commentdb.commentDao().insert(comment1) }).subscribe()
}
/**
* Removes comment from the database
*
* @param comment object that's going to be removed
*/
fun removeComment(comment: Comment){
Observable.just(comment).subscribeOn(Schedulers.io()).map({ comment1 -> commentdb.commentDao().delete(comment1) }).subscribe()
}
fun createCommentObservable(uploader: CommentUploader) {
commentdb.commentDao().getAll().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(
{
success -> uploader.queue(success)
}
)
}