Как бы я go мог создать транзакцию, вставить строку, зафиксировать транзакцию и получить последний вставленный идентификатор. Таким образом, метод должен вернуть Uni<Integer>
. Я новичок в api mutiny, я ранее использовал механизм цепочки будущих обработчиков vertx.io
, поэтому немного сложно перенастроить себя для работы с api mutiny. Я проверил документацию и думаю, что что-то похожее на следующий фрагмент должно работать, но я в тупике, как заставить его работать и возвращать Uni<Integer>
из последнего запроса вместо Uni<Void>
из tx.commit()
return this.client.begin()
.flatMap(tx -> tx
.preparedQuery("INSERT INTO person (firstname,lastname) VALUES ($1,$2)")
.execute(Tuple.of(person.getFirstName(),person.getLastName()))
.onItem().produceUni(id-> tx.query("SELECT LAST_INSERT_ID()"))
.onItem().produceUni(res -> tx.commit())
.onFailure().recoverWithUni(ex-> tx.rollback())
);