From 3ac7f72fa16cb43ba62fac1b5a4d6c424755b60d Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 25 May 2023 08:28:09 +0200 Subject: [PATCH] [jOOQ/jOOQ#15103] Add DSLContext.transactionCoroutine overload accepting CoroutineContext --- .../org/jooq/kotlin/coroutines/CoroutineExtensions.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/jOOQ-kotlin-coroutines/src/main/kotlin/org/jooq/kotlin/coroutines/CoroutineExtensions.kt b/jOOQ-kotlin-coroutines/src/main/kotlin/org/jooq/kotlin/coroutines/CoroutineExtensions.kt index fd4bd0e2fd..8840b53ead 100644 --- a/jOOQ-kotlin-coroutines/src/main/kotlin/org/jooq/kotlin/coroutines/CoroutineExtensions.kt +++ b/jOOQ-kotlin-coroutines/src/main/kotlin/org/jooq/kotlin/coroutines/CoroutineExtensions.kt @@ -1,5 +1,6 @@ package org.jooq.kotlin.coroutines +import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.reactive.awaitFirstOrNull import kotlinx.coroutines.reactor.mono import org.jooq.Configuration @@ -16,4 +17,13 @@ suspend fun DSLContext.transactionCoroutine(transactional: suspend (Configur transactional.invoke(c) } }.awaitFirstOrNull() as T +} + +suspend fun DSLContext.transactionCoroutine(context: CoroutineContext, transactional: suspend (Configuration) -> T): T { + @Suppress("UNCHECKED_CAST") + return transactionPublisher { c -> + mono(context) { + transactional.invoke(c) + } + }.awaitFirstOrNull() as T } \ No newline at end of file