mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2025-02-27 17:11:02 +00:00
rename unlimited kv cache
This commit is contained in:
parent
0d0c16e16d
commit
e55f60c30b
@ -3,4 +3,4 @@ package dev.inmo.micro_utils.repos.cache.cache
|
|||||||
/**
|
/**
|
||||||
* This interface declares that current type of [KVCache] will contains all the data all the time of its life
|
* This interface declares that current type of [KVCache] will contains all the data all the time of its life
|
||||||
*/
|
*/
|
||||||
interface UnlimitedKVCache<K, V> : KVCache<K, V>
|
interface FullKVCache<K, V> : KVCache<K, V>
|
@ -5,9 +5,9 @@ import dev.inmo.micro_utils.repos.MapKeyValueRepo
|
|||||||
import kotlinx.coroutines.sync.Mutex
|
import kotlinx.coroutines.sync.Mutex
|
||||||
import kotlinx.coroutines.sync.withLock
|
import kotlinx.coroutines.sync.withLock
|
||||||
|
|
||||||
open class SimpleUnlimitedKVCache<K, V>(
|
open class SimpleFullKVCache<K, V>(
|
||||||
private val kvParent: KeyValueRepo<K, V> = MapKeyValueRepo<K, V>()
|
private val kvParent: KeyValueRepo<K, V> = MapKeyValueRepo<K, V>()
|
||||||
) : UnlimitedKVCache<K, V>, KeyValueRepo<K, V> by kvParent {
|
) : FullKVCache<K, V>, KeyValueRepo<K, V> by kvParent {
|
||||||
protected val syncMutex = Mutex()
|
protected val syncMutex = Mutex()
|
||||||
|
|
||||||
override suspend fun set(toSet: Map<K, V>) {
|
override suspend fun set(toSet: Map<K, V>) {
|
@ -6,22 +6,20 @@ import dev.inmo.micro_utils.pagination.PaginationResult
|
|||||||
import dev.inmo.micro_utils.pagination.utils.doForAllWithNextPaging
|
import dev.inmo.micro_utils.pagination.utils.doForAllWithNextPaging
|
||||||
import dev.inmo.micro_utils.repos.*
|
import dev.inmo.micro_utils.repos.*
|
||||||
import dev.inmo.micro_utils.repos.cache.*
|
import dev.inmo.micro_utils.repos.cache.*
|
||||||
import dev.inmo.micro_utils.repos.cache.cache.KVCache
|
import dev.inmo.micro_utils.repos.cache.cache.FullKVCache
|
||||||
import dev.inmo.micro_utils.repos.cache.cache.UnlimitedKVCache
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.*
|
|
||||||
|
|
||||||
|
|
||||||
open class FullReadCRUDCacheRepo<ObjectType, IdType>(
|
open class FullReadCRUDCacheRepo<ObjectType, IdType>(
|
||||||
protected open val parentRepo: ReadCRUDRepo<ObjectType, IdType>,
|
protected open val parentRepo: ReadCRUDRepo<ObjectType, IdType>,
|
||||||
protected open val kvCache: UnlimitedKVCache<IdType, ObjectType>,
|
protected open val kvCache: FullKVCache<IdType, ObjectType>,
|
||||||
protected open val idGetter: (ObjectType) -> IdType
|
protected open val idGetter: (ObjectType) -> IdType
|
||||||
) : ReadCRUDRepo<ObjectType, IdType> {
|
) : ReadCRUDRepo<ObjectType, IdType> {
|
||||||
protected inline fun <T> doOrTakeAndActualize(
|
protected inline fun <T> doOrTakeAndActualize(
|
||||||
action: UnlimitedKVCache<IdType, ObjectType>.() -> Optional<T>,
|
action: FullKVCache<IdType, ObjectType>.() -> Optional<T>,
|
||||||
actionElse: ReadCRUDRepo<ObjectType, IdType>.() -> T,
|
actionElse: ReadCRUDRepo<ObjectType, IdType>.() -> T,
|
||||||
actualize: UnlimitedKVCache<IdType, ObjectType>.(T) -> Unit
|
actualize: FullKVCache<IdType, ObjectType>.(T) -> Unit
|
||||||
): T {
|
): T {
|
||||||
kvCache.action().onPresented {
|
kvCache.action().onPresented {
|
||||||
return it
|
return it
|
||||||
@ -67,7 +65,7 @@ open class FullReadCRUDCacheRepo<ObjectType, IdType>(
|
|||||||
|
|
||||||
open class FullCRUDCacheRepo<ObjectType, IdType, InputValueType>(
|
open class FullCRUDCacheRepo<ObjectType, IdType, InputValueType>(
|
||||||
override val parentRepo: CRUDRepo<ObjectType, IdType, InputValueType>,
|
override val parentRepo: CRUDRepo<ObjectType, IdType, InputValueType>,
|
||||||
kvCache: UnlimitedKVCache<IdType, ObjectType>,
|
kvCache: FullKVCache<IdType, ObjectType>,
|
||||||
scope: CoroutineScope = CoroutineScope(Dispatchers.Default),
|
scope: CoroutineScope = CoroutineScope(Dispatchers.Default),
|
||||||
idGetter: (ObjectType) -> IdType
|
idGetter: (ObjectType) -> IdType
|
||||||
) : FullReadCRUDCacheRepo<ObjectType, IdType>(
|
) : FullReadCRUDCacheRepo<ObjectType, IdType>(
|
||||||
|
@ -4,7 +4,7 @@ import dev.inmo.micro_utils.common.*
|
|||||||
import dev.inmo.micro_utils.pagination.Pagination
|
import dev.inmo.micro_utils.pagination.Pagination
|
||||||
import dev.inmo.micro_utils.pagination.PaginationResult
|
import dev.inmo.micro_utils.pagination.PaginationResult
|
||||||
import dev.inmo.micro_utils.repos.*
|
import dev.inmo.micro_utils.repos.*
|
||||||
import dev.inmo.micro_utils.repos.cache.cache.UnlimitedKVCache
|
import dev.inmo.micro_utils.repos.cache.cache.FullKVCache
|
||||||
import dev.inmo.micro_utils.repos.pagination.getAll
|
import dev.inmo.micro_utils.repos.pagination.getAll
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@ -12,12 +12,12 @@ import kotlinx.coroutines.flow.*
|
|||||||
|
|
||||||
open class FullReadKeyValueCacheRepo<Key,Value>(
|
open class FullReadKeyValueCacheRepo<Key,Value>(
|
||||||
protected open val parentRepo: ReadKeyValueRepo<Key, Value>,
|
protected open val parentRepo: ReadKeyValueRepo<Key, Value>,
|
||||||
protected open val kvCache: UnlimitedKVCache<Key, Value>,
|
protected open val kvCache: FullKVCache<Key, Value>,
|
||||||
) : ReadKeyValueRepo<Key, Value> {
|
) : ReadKeyValueRepo<Key, Value> {
|
||||||
protected inline fun <T> doOrTakeAndActualize(
|
protected inline fun <T> doOrTakeAndActualize(
|
||||||
action: UnlimitedKVCache<Key, Value>.() -> Optional<T>,
|
action: FullKVCache<Key, Value>.() -> Optional<T>,
|
||||||
actionElse: ReadKeyValueRepo<Key, Value>.() -> T,
|
actionElse: ReadKeyValueRepo<Key, Value>.() -> T,
|
||||||
actualize: UnlimitedKVCache<Key, Value>.(T) -> Unit
|
actualize: FullKVCache<Key, Value>.(T) -> Unit
|
||||||
): T {
|
): T {
|
||||||
kvCache.action().onPresented {
|
kvCache.action().onPresented {
|
||||||
return it
|
return it
|
||||||
@ -72,7 +72,7 @@ open class FullReadKeyValueCacheRepo<Key,Value>(
|
|||||||
|
|
||||||
open class FullWriteKeyValueCacheRepo<Key,Value>(
|
open class FullWriteKeyValueCacheRepo<Key,Value>(
|
||||||
protected open val parentRepo: WriteKeyValueRepo<Key, Value>,
|
protected open val parentRepo: WriteKeyValueRepo<Key, Value>,
|
||||||
protected open val kvCache: UnlimitedKVCache<Key, Value>,
|
protected open val kvCache: FullKVCache<Key, Value>,
|
||||||
scope: CoroutineScope = CoroutineScope(Dispatchers.Default)
|
scope: CoroutineScope = CoroutineScope(Dispatchers.Default)
|
||||||
) : WriteKeyValueRepo<Key, Value> by parentRepo {
|
) : WriteKeyValueRepo<Key, Value> by parentRepo {
|
||||||
protected val onNewJob = parentRepo.onNewValue.onEach { kvCache.set(it.first, it.second) }.launchIn(scope)
|
protected val onNewJob = parentRepo.onNewValue.onEach { kvCache.set(it.first, it.second) }.launchIn(scope)
|
||||||
@ -81,7 +81,7 @@ open class FullWriteKeyValueCacheRepo<Key,Value>(
|
|||||||
|
|
||||||
open class FullKeyValueCacheRepo<Key,Value>(
|
open class FullKeyValueCacheRepo<Key,Value>(
|
||||||
parentRepo: KeyValueRepo<Key, Value>,
|
parentRepo: KeyValueRepo<Key, Value>,
|
||||||
kvCache: UnlimitedKVCache<Key, Value>,
|
kvCache: FullKVCache<Key, Value>,
|
||||||
scope: CoroutineScope = CoroutineScope(Dispatchers.Default)
|
scope: CoroutineScope = CoroutineScope(Dispatchers.Default)
|
||||||
) : FullWriteKeyValueCacheRepo<Key,Value>(parentRepo, kvCache, scope),
|
) : FullWriteKeyValueCacheRepo<Key,Value>(parentRepo, kvCache, scope),
|
||||||
KeyValueRepo<Key,Value>,
|
KeyValueRepo<Key,Value>,
|
||||||
|
@ -4,20 +4,19 @@ import dev.inmo.micro_utils.common.*
|
|||||||
import dev.inmo.micro_utils.pagination.*
|
import dev.inmo.micro_utils.pagination.*
|
||||||
import dev.inmo.micro_utils.pagination.utils.*
|
import dev.inmo.micro_utils.pagination.utils.*
|
||||||
import dev.inmo.micro_utils.repos.*
|
import dev.inmo.micro_utils.repos.*
|
||||||
import dev.inmo.micro_utils.repos.cache.cache.UnlimitedKVCache
|
import dev.inmo.micro_utils.repos.cache.cache.FullKVCache
|
||||||
import dev.inmo.micro_utils.repos.pagination.getAll
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
|
|
||||||
open class FullReadKeyValuesCacheRepo<Key,Value>(
|
open class FullReadKeyValuesCacheRepo<Key,Value>(
|
||||||
protected open val parentRepo: ReadKeyValuesRepo<Key, Value>,
|
protected open val parentRepo: ReadKeyValuesRepo<Key, Value>,
|
||||||
protected open val kvCache: UnlimitedKVCache<Key, List<Value>>,
|
protected open val kvCache: FullKVCache<Key, List<Value>>,
|
||||||
) : ReadKeyValuesRepo<Key, Value> {
|
) : ReadKeyValuesRepo<Key, Value> {
|
||||||
protected inline fun <T> doOrTakeAndActualize(
|
protected inline fun <T> doOrTakeAndActualize(
|
||||||
action: UnlimitedKVCache<Key, List<Value>>.() -> Optional<T>,
|
action: FullKVCache<Key, List<Value>>.() -> Optional<T>,
|
||||||
actionElse: ReadKeyValuesRepo<Key, Value>.() -> T,
|
actionElse: ReadKeyValuesRepo<Key, Value>.() -> T,
|
||||||
actualize: UnlimitedKVCache<Key, List<Value>>.(T) -> Unit
|
actualize: FullKVCache<Key, List<Value>>.(T) -> Unit
|
||||||
): T {
|
): T {
|
||||||
kvCache.action().onPresented {
|
kvCache.action().onPresented {
|
||||||
return it
|
return it
|
||||||
@ -107,7 +106,7 @@ open class FullReadKeyValuesCacheRepo<Key,Value>(
|
|||||||
|
|
||||||
open class FullWriteKeyValuesCacheRepo<Key,Value>(
|
open class FullWriteKeyValuesCacheRepo<Key,Value>(
|
||||||
protected open val parentRepo: WriteKeyValueRepo<Key, Value>,
|
protected open val parentRepo: WriteKeyValueRepo<Key, Value>,
|
||||||
protected open val kvCache: UnlimitedKVCache<Key, Value>,
|
protected open val kvCache: FullKVCache<Key, Value>,
|
||||||
scope: CoroutineScope = CoroutineScope(Dispatchers.Default)
|
scope: CoroutineScope = CoroutineScope(Dispatchers.Default)
|
||||||
) : WriteKeyValueRepo<Key, Value> by parentRepo {
|
) : WriteKeyValueRepo<Key, Value> by parentRepo {
|
||||||
protected val onNewJob = parentRepo.onNewValue.onEach { kvCache.set(it.first, it.second) }.launchIn(scope)
|
protected val onNewJob = parentRepo.onNewValue.onEach { kvCache.set(it.first, it.second) }.launchIn(scope)
|
||||||
@ -116,7 +115,7 @@ open class FullWriteKeyValuesCacheRepo<Key,Value>(
|
|||||||
|
|
||||||
open class FullKeyValuesCacheRepo<Key,Value>(
|
open class FullKeyValuesCacheRepo<Key,Value>(
|
||||||
parentRepo: KeyValueRepo<Key, Value>,
|
parentRepo: KeyValueRepo<Key, Value>,
|
||||||
kvCache: UnlimitedKVCache<Key, Value>,
|
kvCache: FullKVCache<Key, Value>,
|
||||||
scope: CoroutineScope = CoroutineScope(Dispatchers.Default)
|
scope: CoroutineScope = CoroutineScope(Dispatchers.Default)
|
||||||
) : FullWriteKeyValueCacheRepo<Key,Value>(parentRepo, kvCache, scope),
|
) : FullWriteKeyValueCacheRepo<Key,Value>(parentRepo, kvCache, scope),
|
||||||
KeyValueRepo<Key,Value>,
|
KeyValueRepo<Key,Value>,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user