doSuspendTransaction

suspend fun <T> doSuspendTransaction(onRollbackStepError: suspend (Throwable) -> Unit = { }, block: suspend TransactionsDSL.() -> T): Result<T>(source)

Starts transaction with opportunity to add actions rollableBackOperation. How to use:

doSuspendTransaction {
println("start of action")

withRollback({ // it - result of action
// some rollback action
}) {
// Some action with rollback
}

withRollback({
repository.delete(it) // it - result of createSomething, if it completes successfully
}) {
repository.createSomething()
}

withRollback({
// will not be triggered due to error in action
}) {
error("It is just a simple error") // Will trigger rolling back previously successfully completed actions
}
}

Parameters

onRollbackStepError

Will be called if rollback action throwing some error