Как получить дополнительный результат в операторах вставки с Doobie?
У меня есть дополнительный запрос вставки:
val q = sql"insert into some_table (some_field) select 42 where ...(some condition)"
Выполнение этого запроса с:
q.update.withUniqueGeneratedKeys[Option[Long]]("id")
не удается с
Набор результатов исчерпан: ожидается больше строк
затем condition
ложно
Как получить Optional[Long]
результат из вставки заявления с Doobie?
UPD
.withGeneratedKeys[Long]("id")
дает только Long
для понимания
val q = sql"insert into some_table (some_field) select 42 where ...(some condition)"
for {
id <- q.update.withGeneratedKeys[Long]("id") // id is long
_ <- if (<id is present>) <some other inserts> else <nothing>
} yield id
Как проверить id
?
1 ответ
Решение
Как прокомментировал @Thilo, вы можете использовать withGeneratedKeys
который возвращает вам Stream[F, Long]
(где F
ваш тип эффекта)
val result = q.update.withGeneratedKeys[Long]("id")
Вот док.