mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-06-02 07:55:13 +00:00
39 lines
1.5 KiB
Kotlin
39 lines
1.5 KiB
Kotlin
package dev.inmo.micro_utils.repos.cache.fallback.keyvalues
|
|
|
|
import dev.inmo.micro_utils.repos.KeyValueRepo
|
|
import dev.inmo.micro_utils.repos.KeyValuesRepo
|
|
import dev.inmo.micro_utils.repos.MapKeyValueRepo
|
|
import dev.inmo.micro_utils.repos.WriteKeyValuesRepo
|
|
import dev.inmo.micro_utils.repos.cache.fallback.ActionWrapper
|
|
import kotlinx.coroutines.CoroutineScope
|
|
import kotlin.time.Duration.Companion.seconds
|
|
|
|
open class AutoRecacheKeyValuesRepo<Id, RegisteredObject>(
|
|
override val originalRepo: KeyValuesRepo<Id, RegisteredObject>,
|
|
scope: CoroutineScope,
|
|
kvCache: KeyValueRepo<Id, List<RegisteredObject>> = MapKeyValueRepo(),
|
|
recacheDelay: Long = 60.seconds.inWholeMilliseconds,
|
|
actionWrapper: ActionWrapper = ActionWrapper.Direct
|
|
) : AutoRecacheReadKeyValuesRepo<Id, RegisteredObject> (
|
|
originalRepo,
|
|
scope,
|
|
kvCache,
|
|
recacheDelay,
|
|
actionWrapper
|
|
),
|
|
WriteKeyValuesRepo<Id, RegisteredObject> by AutoRecacheWriteKeyValuesRepo(originalRepo, scope, kvCache),
|
|
KeyValuesRepo<Id, RegisteredObject> {
|
|
|
|
constructor(
|
|
originalRepo: KeyValuesRepo<Id, RegisteredObject>,
|
|
scope: CoroutineScope,
|
|
originalCallTimeoutMillis: Long,
|
|
kvCache: KeyValueRepo<Id, List<RegisteredObject>> = MapKeyValueRepo(),
|
|
recacheDelay: Long = 60.seconds.inWholeMilliseconds
|
|
) : this(originalRepo, scope, kvCache, recacheDelay, ActionWrapper.Timeouted(originalCallTimeoutMillis))
|
|
|
|
override suspend fun clearWithValue(v: RegisteredObject) {
|
|
super.clearWithValue(v)
|
|
}
|
|
}
|