Phantom DSL - чтение с последующей записью
Мне нужно обновить столбец, только если текущее значение удовлетворяет предварительному условию. Я попробовал ниже,
def acceptDelivery(implicit sc: SecurityContext, ar: AcceptRequest) : Future[DeliveryResponse] = {
for {
d <- Database.DeliveryForVendorModel.findDelivery(ar) if d.isDefined && d.get.isPending
_ <- Database.acceptDelivery(d.get, sc.ownerId, sc.ownerName)
} yield buildAcceptResponse(d)
}
Однако, если первое будущее не материализуется, оно создает исключение. Метод findDelivery возвращает Future[Option[T]]
где Т газ - метод ожидания.