mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-06-01 23:45:28 +00:00
26 lines
943 B
Kotlin
26 lines
943 B
Kotlin
package dev.inmo.micro_utils.fsm.repos.common
|
|
|
|
import dev.inmo.micro_utils.fsm.common.State
|
|
import dev.inmo.micro_utils.fsm.common.managers.DefaultStatesManagerRepo
|
|
import dev.inmo.micro_utils.repos.*
|
|
import dev.inmo.micro_utils.repos.pagination.getAll
|
|
|
|
class KeyValueBasedDefaultStatesManagerRepo(
|
|
private val keyValueRepo: KeyValueRepo<Any, State>
|
|
) : DefaultStatesManagerRepo {
|
|
override suspend fun set(state: State) {
|
|
keyValueRepo.set(state.context, state)
|
|
}
|
|
|
|
override suspend fun removeState(state: State) {
|
|
if (keyValueRepo.get(state.context) == state) {
|
|
keyValueRepo.unset(state.context)
|
|
}
|
|
}
|
|
|
|
override suspend fun getStates(): List<State> = keyValueRepo.getAll { keys(it) }.map { it.second }
|
|
override suspend fun getContextState(context: Any): State? = keyValueRepo.get(context)
|
|
|
|
override suspend fun contains(context: Any): Boolean = keyValueRepo.contains(context)
|
|
}
|