У меня есть приложение, в котором есть процедура завершения сеанса. Я хочу обновить сеанс с указанием даты / времени окончания и, возможно, другой информации при нажатии кнопки «Завершить сеанс». У меня есть dao, репозиторий и ViewModel.
Я подумал, что лучший способ сделать это - получить запись, обновить поля в объекте и сохранить объект обратно в комнату.
Я точно не знаю, как go лучше всего об этом сообщить. Вот код, с которым я работаю:
В Dao:
@Query("SELECT * FROM Session WHERE id=:id")
Single<Session> getSessionById(int id);
В репозитории:
public Single<Session> getSessionById(int sessionId) {
return sessionDao.getSessionById(sessionId);
}
В ViewModel:
public void endSession () {
Single<Session> session = sessionRepository.getSessionById(sessionId);
//????? session.doOnSuccess()
//get current date/time
Date date = Calendar.getInstance().getTime();
//set the end date
session.setEndTime(date);
//update the session
sessionRepository.update(session);
}
Я хотел бы получить любой совет по выбору вариантов. Я начал использовать простой объект, но у меня возникли ошибки, связанные с выполнением запроса в основном потоке, и я хотел избежать этого. Мне не нужен наблюдаемый / текучий объект. Я понимаю, что Asyn c устарел в Android 11. Поэтому я подумал, что Single будет работать.
Любые советы по выбору использования Single или кода будут действительно полезны.
ОБНОВЛЕНИЕ: мне просто нужен простой пример в Java извлечения одной записи из, и основная часть - это функциональность в ViewModel (как выглядит doOnSuccess и, возможно, при ошибке).