diff --git a/doobie/src/main/scala/za/co/absa/db/fadb/doobie/DoobieFunction.scala b/doobie/src/main/scala/za/co/absa/db/fadb/doobie/DoobieFunction.scala index 6be2e7a8..dc88239d 100644 --- a/doobie/src/main/scala/za/co/absa/db/fadb/doobie/DoobieFunction.scala +++ b/doobie/src/main/scala/za/co/absa/db/fadb/doobie/DoobieFunction.scala @@ -286,7 +286,10 @@ object DoobieFunction { * @return the `ConnectionIO[FailedOrRow[R]]` representing the database function call */ def toConnectionIOSingle(values: I): ConnectionIO[FailedOrRow[R]] = { - toConnectionIO(values).map(_.head) + val fragments = toFragmentsSeq(values) + val fragment = composeFragments(fragments) + val queryWithStatus = new DoobieQueryWithStatus[R](fragment, checkStatus) + fragment.query[StatusWithData[R]].unique.map(queryWithStatus.getResultOrException) } } @@ -379,7 +382,10 @@ object DoobieFunction { * @return the `ConnectionIO[Option[FailedOrRow[R]]]` representing the database function call */ def toConnectionIOOptional(values: I): ConnectionIO[Option[FailedOrRow[R]]] = { - toConnectionIO(values).map(_.headOption) + val fragments = toFragmentsSeq(values) + val fragment = composeFragments(fragments) + val queryWithStatus = new DoobieQueryWithStatus[R](fragment, checkStatus) + fragment.query[StatusWithData[R]].option.map(_.map(queryWithStatus.getResultOrException)) } } }