Я использую Room
в качестве ORM, и вот мой интерфейс Dao:
@Dao
interface UserDao {
@Query(value = "SELECT * FROM User LIMIT 1")
fun get(): Single<User?>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun add(profile: User)
}
С другой стороны, у меня есть метод в репозитории, который должен проверять, является ли пользователь логином или нет, вот код реализации:
override fun isUserLogin(): Single<Boolean> = userDao
.get().async()
.onErrorReturn { null }
.map { it != null }
Комната выдаст следующее исключение, если ни одна строка не соответствует запросу:
Запрос вернул пустой набор результатов: SELECT * FROM User LIMIT 1
Я хочу вернуть null
в этом случае, но когда я выполняю код, выдается исключение со следующим сообщением:
Указано нулевое значение
Я не могу использовать Optional
, потому что Дао возвращает Single<User?>
, поэтому onErrorReturn
должен вернуть тот же тип.
Как я могу проверить, существует ли пользователь или нет, не меняя Дао?