Я хочу обновить определенный столбец в строке только в том случае, если строка имеет действительные данные. Конкретно: у меня есть таблица с Event
, в которой хранятся start
, stop
и isActive
. Я бы хотел, чтобы некоторые Events
активировали, установив isActive
в true
, однако мне нужно проверить, действительны ли даты начала и окончания. модель:Обновить строку только в том случае, если выполнено условие
case class Event {start:DateTime, stop:DateTime, isActive:Boolean}
мой валидация метода подписи:
validateEvent(ev: Event): Boolean
Мой первый подход:
def activateEv() = Action.async(parse.json) { request => { ... val ev = db.run(dao.findEvById(poid, uid)) val ret = ev.flatMap { case st: Option[Event] => if (validateEvent(st.get)) { db.run(dao.updateActivity(poid, true).map { case 0 => false case other => true } } else Future(false) } ... } }
Я считаю, что это не так, как эта проблема должна быть решена. Не могли бы вы посоветовать? Может быть достаточно одного db.run?