mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-11-22 16:23:50 +00:00
improve default 'set' of KeyValuesRepo
This commit is contained in:
parent
cf531c949d
commit
4b0f20dbd1
@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
## 0.20.34
|
## 0.20.34
|
||||||
|
|
||||||
|
* `Repos`:
|
||||||
|
* `Common`:
|
||||||
|
* Improve default `set` realization of `KeyValuesRepo`
|
||||||
|
|
||||||
## 0.20.33
|
## 0.20.33
|
||||||
|
|
||||||
* `Colors`
|
* `Colors`
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package dev.inmo.micro_utils.repos
|
package dev.inmo.micro_utils.repos
|
||||||
|
|
||||||
|
import dev.inmo.micro_utils.common.diff
|
||||||
import dev.inmo.micro_utils.pagination.*
|
import dev.inmo.micro_utils.pagination.*
|
||||||
import dev.inmo.micro_utils.pagination.utils.doForAllWithNextPaging
|
import dev.inmo.micro_utils.pagination.utils.doForAllWithNextPaging
|
||||||
import dev.inmo.micro_utils.pagination.utils.getAllWithNextPaging
|
import dev.inmo.micro_utils.pagination.utils.getAllWithNextPaging
|
||||||
@ -130,6 +131,14 @@ interface KeyValuesRepo<Key, Value> : ReadKeyValuesRepo<Key, Value>, WriteKeyVal
|
|||||||
|
|
||||||
remove(toRemove)
|
remove(toRemove)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun set(toSet: Map<Key, List<Value>>) {
|
||||||
|
toSet.forEach { (k, v) ->
|
||||||
|
val diff = getAll(k).diff(v)
|
||||||
|
remove(k, diff.removed.map { it.value })
|
||||||
|
add(k, diff.added.map { it.value })
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
typealias OneToManyKeyValueRepo<Key,Value> = KeyValuesRepo<Key, Value>
|
typealias OneToManyKeyValueRepo<Key,Value> = KeyValuesRepo<Key, Value>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user