https://kotlinlang.org logo
a

Alex Wood

01/20/2022, 7:53 PM
I have written a wrapper function that I do all of my queries with:
Copy code
@OptIn(ExperimentalCoroutinesApi::class)
@PublishedApi
internal val sqlDispatcher = Dispatchers.IO.limitedParallelism(100)

suspend inline fun <T> suspendTransaction(
    crossinline statement: suspend Transaction.() -> T
) = newSuspendedTransaction(sqlDispatcher) {
    statement()
}

suspend inline fun <T> suspendTransaction(
    transaction: Transaction,
    crossinline statement: suspend Transaction.() -> T
) = transaction.suspendedTransaction(sqlDispatcher) {
    statement()
}