В Scala Play и Slick я хочу отправить ответ OK только после того, как в базе данных была создана запись, до сих пор у меня есть:В Scala Play и Slick, как получить запрос до завершения отправки ответа
def createItem = Action(BodyParsers.parse.json) {
request => {
val result = request.body.validate[Item]
result.fold(
invalid => {
val problem = new Problem(BAD_REQUEST, "Invalid Item JSON", invalid.toString)
returnProblemResult(BadRequest, problem)
},
item => {
service.create(item)
// TODO check for success before sending ok
Ok.as(ContentTypes("DEFAULT"))
}
)
}
}
И внутри метода service.create:
def create(item: Item): Future[Unit] = {
exists(item.id).map {
case true =>
case _ => db.run(Item.table += cc)
}
}
в настоящее время OK ответ присылают даже если новый элемент не будет создан. Я бы хотел, чтобы он возвращал только OK, если элемент создан. Если элемент уже существует или возникают другие ошибки (например, ошибки базы данных), метод createItem должен знать, какая проблема возникла, и вернуть результат проблемы с сообщением об ошибке.