Я хочу отфильтровать поток (), фильтр должен быть снабжен предикатом, как мне этого добиться с помощью RxJava, я использую Room Persistence Database, я хочу добавить новые поля, если база данных еще не содержит их,Моя проблема связана с методом doDatabaseContainSong ().
Я новичок в RX Java, код представляет собой смесь Kotlin и Java
// 1. ADD NEW SONGS TO DATABASE
songs.stream()
.filter(song -> !doesDatabaseContainSong(song, mViewModel))
.forEach(this::addSongToDatabase);
Мне нужна следующая функция (didDatabaseContainSong)для возврата логического значения вместо него возвращается Single
public static boolean doesDatabaseContainSong(Song song, SongViewModel model) {
int result = model.doesDatabaseContainSong(song.getId(), Type.GOOGLE_DRIVE.name());
return result != 0;
}
Модель представления
fun doesDatabaseContainSong(mId: String): Single<Int> {
return repository.doesDatabaseContainSong(mId)
}
Репозиторий
fun doesDatabaseContainSong(mId: String): Single<Int> {
return songDao.doesDatabaseContainSong(mId)
}
DAO
@Query("SELECT COUNT(id) from song_table WHERE id = :mId")
fun doesDatabaseContainSong(mId: String): Single<Int>