Lena Stepanova
02/10/2021, 1:45 PMsuspend fun <T: Any> Transacter.transactionWithContextResult(
coroutineContext: CoroutineContext,
noEnclosing: Boolean = false,
body: TransactionWithReturn<T>.() -> T
): T {
return withContext(coroutineContext) {
this@transactionWithContextResult.transactionWithResult(noEnclosing) { body }
}
}
Using in DatabaseHelper:
suspend fun getAllItems(): List<Item> {
dbRef.transactionWithContextResult<List<Item>>(backgroundDispatcher) {
dbQueries.getAllItems(::mapItemsSelecting).executeAsList()
}
}
romtsn
02/11/2021, 9:04 AMLena Stepanova
02/11/2021, 9:08 AMromtsn
02/11/2021, 9:09 AMbody
actually, so change it to either body.invoke()
or just body()
Lena Stepanova
02/11/2021, 9:11 AM