mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2025-10-21 15:20:32 +00:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
b1a96b6ecb | |||
66dac2086c | |||
e269d0d206 | |||
5d95c3eb9c | |||
26650e9b6c | |||
7339dd8354 | |||
8ae983971a |
10
CHANGELOG.md
10
CHANGELOG.md
@@ -1,5 +1,15 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.25.4
|
||||||
|
|
||||||
|
* `Versions`:
|
||||||
|
* `Ktor`: `3.1.1` -> `3.1.2`
|
||||||
|
* `Koin`: `4.0.2` -> `4.0.4`
|
||||||
|
* `Coroutines`:
|
||||||
|
* Add `SmartKeyRWLocker.withWriteLocks` extension with vararg keys
|
||||||
|
* `Transactions`:
|
||||||
|
* Fix order of rollback actions calling
|
||||||
|
|
||||||
## 0.25.3
|
## 0.25.3
|
||||||
|
|
||||||
* `Coroutines`:
|
* `Coroutines`:
|
||||||
|
@@ -221,4 +221,6 @@ suspend inline fun <T, R> SmartKeyRWLocker<T>.withWriteLocks(keys: Iterable<T>,
|
|||||||
unlockWrite(it)
|
unlockWrite(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend inline fun <T, R> SmartKeyRWLocker<T>.withWriteLocks(vararg keys: T, action: () -> R): R = withWriteLocks(keys.asIterable(), action)
|
||||||
|
@@ -15,5 +15,5 @@ crypto_js_version=4.1.1
|
|||||||
# Project data
|
# Project data
|
||||||
|
|
||||||
group=dev.inmo
|
group=dev.inmo
|
||||||
version=0.25.3
|
version=0.25.4
|
||||||
android_code_version=293
|
android_code_version=294
|
||||||
|
@@ -15,11 +15,11 @@ sqlite = "3.49.1.0"
|
|||||||
korlibs = "5.4.0"
|
korlibs = "5.4.0"
|
||||||
uuid = "0.8.4"
|
uuid = "0.8.4"
|
||||||
|
|
||||||
ktor = "3.1.1"
|
ktor = "3.1.2"
|
||||||
|
|
||||||
gh-release = "2.5.2"
|
gh-release = "2.5.2"
|
||||||
|
|
||||||
koin = "4.0.2"
|
koin = "4.0.4"
|
||||||
|
|
||||||
okio = "3.10.2"
|
okio = "3.10.2"
|
||||||
|
|
||||||
|
@@ -2,7 +2,7 @@ package dev.inmo.micro_utils.transactions
|
|||||||
|
|
||||||
typealias TransactionDSLRollbackLambda = suspend (Throwable) -> Unit
|
typealias TransactionDSLRollbackLambda = suspend (Throwable) -> Unit
|
||||||
class TransactionsDSL internal constructor() {
|
class TransactionsDSL internal constructor() {
|
||||||
internal val rollbackActions = LinkedHashSet<TransactionDSLRollbackLambda>()
|
internal val rollbackActions = ArrayList<TransactionDSLRollbackLambda>()
|
||||||
|
|
||||||
internal fun addRollbackAction(rollbackAction: TransactionDSLRollbackLambda) {
|
internal fun addRollbackAction(rollbackAction: TransactionDSLRollbackLambda) {
|
||||||
rollbackActions.add(rollbackAction)
|
rollbackActions.add(rollbackAction)
|
||||||
@@ -71,9 +71,10 @@ suspend fun <T> doSuspendTransaction(
|
|||||||
return runCatching {
|
return runCatching {
|
||||||
transactionsDSL.block()
|
transactionsDSL.block()
|
||||||
}.onFailure { e ->
|
}.onFailure { e ->
|
||||||
transactionsDSL.rollbackActions.forEach {
|
for (i in transactionsDSL.rollbackActions.lastIndex downTo 0) {
|
||||||
|
val rollbackAction = transactionsDSL.rollbackActions[i]
|
||||||
runCatching {
|
runCatching {
|
||||||
it.invoke(e)
|
rollbackAction.invoke(e)
|
||||||
}.onFailure { ee ->
|
}.onFailure { ee ->
|
||||||
onRollbackStepError(ee)
|
onRollbackStepError(ee)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user