データベースを変更したときにルームデータベースを使用してコメントとRxJavaをリスナーとして保存しています。ルームデータベースの削除トリガーを削除する
insertが呼び出されたときにのみ、テーブルに対してdeleteが呼び出されたときにコールバックを呼び出さないようにしたいとします。私がこれまでに見つけた何
は、ルームライブラリが順番にRxJavaのメソッドを呼び出して、テーブルのdelete
、insert
とupdate
で呼び出されtriggers
を持っているということです。
delete
トリガーを削除し、insert
およびupdate
メソッドのコールバックのみを削除する方法はありますか。ここで
は私CommentDAOです:
@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)
}
)
}
これは、正しい応答がそう長く取るために残念です。ウィンドウ関数が挿入をどのようにフィルタリングするのかをもう少し説明してもらえますか? – Pavle37