From 7a650f5c2f27ce5943473b02c3e8185386a37a6e Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 2 Mar 2025 16:12:23 +0600 Subject: [PATCH] Disallow overrides in repos --- CHANGELOG.md | 4 +++ .../micro_utils/repos/cache/CRUDCacheRepo.kt | 24 ++++++++-------- .../repos/cache/KeyValueCacheRepo.kt | 14 +++++----- .../repos/cache/KeyValuesCacheRepo.kt | 4 +-- .../fallback/crud/AutoRecacheReadCRUDRepo.kt | 2 +- .../keyvalue/AutoRecacheReadKeyValueRepo.kt | 2 +- .../keyvalues/AutoRecacheReadKeyValuesRepo.kt | 2 +- .../repos/cache/full/FullCRUDCacheRepo.kt | 22 +++++++-------- .../repos/cache/full/FullKeyValueCacheRepo.kt | 26 ++++++++--------- .../cache/full/FullKeyValuesCacheRepo.kt | 26 ++++++++--------- .../full/direct/DirectFullCRUDCacheRepo.kt | 21 ++++++-------- .../direct/DirectFullKeyValueCacheRepo.kt | 28 +++++++++---------- .../direct/DirectFullKeyValuesCacheRepo.kt | 26 ++++++++--------- 13 files changed, 101 insertions(+), 100 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 832ff537601..2d894cfd624 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.25.0 +* `Repos`: + * `Cache`: + * All cache repos now do not have `open` vals - to avoid collisions in runtime + ## 0.24.7 * `Versions`: diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/CRUDCacheRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/CRUDCacheRepo.kt index b879fd0dc9c..372bff67823 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/CRUDCacheRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/CRUDCacheRepo.kt @@ -12,10 +12,10 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* open class ReadCRUDCacheRepo( - protected open val parentRepo: ReadCRUDRepo, - protected open val kvCache: KVCache, + protected val parentRepo: ReadCRUDRepo, + protected val kvCache: KVCache, protected val locker: SmartRWLocker = SmartRWLocker(), - protected open val idGetter: (ObjectType) -> IdType + protected val idGetter: (ObjectType) -> IdType ) : ReadCRUDRepo by parentRepo, CommonCacheRepo { override suspend fun getById(id: IdType): ObjectType? = locker.withReadAcquire { kvCache.get(id) @@ -51,11 +51,11 @@ fun ReadCRUDRepo.cached( ) = ReadCRUDCacheRepo(this, kvCache, locker, idGetter) open class WriteCRUDCacheRepo( - protected open val parentRepo: WriteCRUDRepo, - protected open val kvCache: KeyValueRepo, - protected open val scope: CoroutineScope = CoroutineScope(Dispatchers.Default), + protected val parentRepo: WriteCRUDRepo, + protected val kvCache: KeyValueRepo, + protected val scope: CoroutineScope = CoroutineScope(Dispatchers.Default), protected val locker: SmartRWLocker = SmartRWLocker(), - protected open val idGetter: (ObjectType) -> IdType + protected val idGetter: (ObjectType) -> IdType ) : WriteCRUDRepo, CommonCacheRepo { override val newObjectsFlow: Flow by parentRepo::newObjectsFlow override val updatedObjectsFlow: Flow by parentRepo::updatedObjectsFlow @@ -131,25 +131,25 @@ fun WriteCRUDRepo open class CRUDCacheRepo( - override val parentRepo: CRUDRepo, + protected val crudRepo: CRUDRepo, kvCache: KVCache, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), locker: SmartRWLocker = SmartRWLocker(), idGetter: (ObjectType) -> IdType ) : ReadCRUDCacheRepo( - parentRepo, + crudRepo, kvCache, locker, idGetter ), - WriteCRUDRepo by WriteCRUDCacheRepo( - parentRepo, +WriteCRUDRepo by WriteCRUDCacheRepo( + crudRepo, kvCache, scope, locker, idGetter ), - CRUDRepo { +CRUDRepo { override suspend fun invalidate() = kvCache.actualizeAll(parentRepo, locker = locker) } diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/KeyValueCacheRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/KeyValueCacheRepo.kt index db336389b5a..48263b0d2f0 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/KeyValueCacheRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/KeyValueCacheRepo.kt @@ -12,8 +12,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* open class ReadKeyValueCacheRepo( - protected open val parentRepo: ReadKeyValueRepo, - protected open val kvCache: KVCache, + protected val parentRepo: ReadKeyValueRepo, + protected val kvCache: KVCache, protected val locker: SmartRWLocker = SmartRWLocker(), ) : ReadKeyValueRepo by parentRepo, CommonCacheRepo { override suspend fun get(k: Key): Value? = locker.withReadAcquire { @@ -58,24 +58,24 @@ fun ReadKeyValueRepo.cached( ) = ReadKeyValueCacheRepo(this, kvCache, locker) open class KeyValueCacheRepo( - override val parentRepo: KeyValueRepo, + protected val kvRepo: KeyValueRepo, kvCache: KVCache, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), locker: SmartRWLocker = SmartRWLocker(), -) : ReadKeyValueCacheRepo(parentRepo, kvCache, locker), KeyValueRepo, WriteKeyValueRepo by parentRepo, CommonCacheRepo { - protected val onNewJob = parentRepo.onNewValue.onEach { +) : ReadKeyValueCacheRepo(kvRepo, kvCache, locker), KeyValueRepo, WriteKeyValueRepo by parentRepo, CommonCacheRepo { + protected val onNewJob = kvRepo.onNewValue.onEach { locker.withWriteLock { kvCache.set(it.first, it.second) } }.launchIn(scope) - protected val onRemoveJob = parentRepo.onValueRemoved.onEach { + protected val onRemoveJob = kvRepo.onValueRemoved.onEach { locker.withWriteLock { kvCache.unset(it) } }.launchIn(scope) override suspend fun clear() { - parentRepo.clear() + kvRepo.clear() locker.withWriteLock { kvCache.clear() } diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/KeyValuesCacheRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/KeyValuesCacheRepo.kt index cfdfd511dee..98c064b9c4c 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/KeyValuesCacheRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/KeyValuesCacheRepo.kt @@ -13,8 +13,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* open class ReadKeyValuesCacheRepo( - protected open val parentRepo: ReadKeyValuesRepo, - protected open val kvCache: KVCache>, + protected val parentRepo: ReadKeyValuesRepo, + protected val kvCache: KVCache>, protected val locker: SmartRWLocker = SmartRWLocker(), ) : ReadKeyValuesRepo by parentRepo, CommonCacheRepo { override suspend fun get(k: Key, pagination: Pagination, reversed: Boolean): PaginationResult { diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/crud/AutoRecacheReadCRUDRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/crud/AutoRecacheReadCRUDRepo.kt index e84912ebc64..84f5035ceae 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/crud/AutoRecacheReadCRUDRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/crud/AutoRecacheReadCRUDRepo.kt @@ -18,7 +18,7 @@ import kotlinx.coroutines.launch import kotlin.time.Duration.Companion.seconds open class AutoRecacheReadCRUDRepo( - protected open val originalRepo: ReadCRUDRepo, + protected val originalRepo: ReadCRUDRepo, protected val scope: CoroutineScope, protected val kvCache: KeyValueRepo = MapKeyValueRepo(), protected val recacheDelay: Long = 60.seconds.inWholeMilliseconds, diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/keyvalue/AutoRecacheReadKeyValueRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/keyvalue/AutoRecacheReadKeyValueRepo.kt index 71e3360a751..e1aac600768 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/keyvalue/AutoRecacheReadKeyValueRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/keyvalue/AutoRecacheReadKeyValueRepo.kt @@ -18,7 +18,7 @@ import kotlinx.coroutines.launch import kotlin.time.Duration.Companion.seconds open class AutoRecacheReadKeyValueRepo( - protected open val originalRepo: ReadKeyValueRepo, + protected val originalRepo: ReadKeyValueRepo, protected val scope: CoroutineScope, protected val kvCache: KeyValueRepo = MapKeyValueRepo(), protected val recacheDelay: Long = 60.seconds.inWholeMilliseconds, diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/keyvalues/AutoRecacheReadKeyValuesRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/keyvalues/AutoRecacheReadKeyValuesRepo.kt index 1bbdf83711e..c0795f27819 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/keyvalues/AutoRecacheReadKeyValuesRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/fallback/keyvalues/AutoRecacheReadKeyValuesRepo.kt @@ -24,7 +24,7 @@ import kotlinx.coroutines.launch import kotlin.time.Duration.Companion.seconds open class AutoRecacheReadKeyValuesRepo( - protected open val originalRepo: ReadKeyValuesRepo, + protected val originalRepo: ReadKeyValuesRepo, protected val scope: CoroutineScope, protected val kvCache: KeyValueRepo> = MapKeyValueRepo(), protected val recacheDelay: Long = 60.seconds.inWholeMilliseconds, diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullCRUDCacheRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullCRUDCacheRepo.kt index 262b5c84763..d30ede0d633 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullCRUDCacheRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullCRUDCacheRepo.kt @@ -15,10 +15,10 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers open class FullReadCRUDCacheRepo( - protected open val parentRepo: ReadCRUDRepo, - protected open val kvCache: KeyValueRepo, - protected open val locker: SmartRWLocker = SmartRWLocker(), - protected open val idGetter: (ObjectType) -> IdType + protected val parentRepo: ReadCRUDRepo, + protected val kvCache: KeyValueRepo, + protected val locker: SmartRWLocker = SmartRWLocker(), + protected val idGetter: (ObjectType) -> IdType ) : ReadCRUDRepo, FullCacheRepo { protected suspend inline fun doOrTakeAndActualize( action: KeyValueRepo.() -> Optional, @@ -94,20 +94,20 @@ fun ReadCRUDRepo.cached( ) = FullReadCRUDCacheRepo(this, kvCache, locker, idGetter) open class FullCRUDCacheRepo( - override val parentRepo: CRUDRepo, - override val kvCache: KeyValueRepo, + protected val crudRepo: CRUDRepo, + kvCache: KeyValueRepo, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), skipStartInvalidate: Boolean = false, - override val locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), - override val idGetter: (ObjectType) -> IdType + locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), + idGetter: (ObjectType) -> IdType ) : FullReadCRUDCacheRepo( - parentRepo, + crudRepo, kvCache, locker, idGetter ), WriteCRUDRepo by WriteCRUDCacheRepo( - parentRepo, + crudRepo, kvCache, scope, locker, @@ -128,7 +128,7 @@ open class FullCRUDCacheRepo( protected open suspend fun initialInvalidate() { try { - kvCache.actualizeAll(parentRepo, locker = null) + kvCache.actualizeAll(crudRepo, locker = null) } finally { locker.unlockWrite() } diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValueCacheRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValueCacheRepo.kt index e68d05def79..470430ae055 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValueCacheRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValueCacheRepo.kt @@ -15,9 +15,9 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* open class FullReadKeyValueCacheRepo( - protected open val parentRepo: ReadKeyValueRepo, - protected open val kvCache: KeyValueRepo, - protected open val locker: SmartRWLocker = SmartRWLocker() + protected val parentRepo: ReadKeyValueRepo, + protected val kvCache: KeyValueRepo, + protected val locker: SmartRWLocker = SmartRWLocker() ) : ReadKeyValueRepo, FullCacheRepo { protected suspend inline fun doOrTakeAndActualize( action: KeyValueRepo.() -> Optional, @@ -98,7 +98,7 @@ fun ReadKeyValueRepo.cached( open class FullWriteKeyValueCacheRepo( parentRepo: WriteKeyValueRepo, - protected open val kvCache: KeyValueRepo, + protected val kvCache: KeyValueRepo, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), protected val locker: SmartRWLocker = SmartRWLocker() ) : WriteKeyValueRepo by parentRepo, FullCacheRepo { @@ -126,16 +126,16 @@ fun WriteKeyValueRepo.caching( ) = FullWriteKeyValueCacheRepo(this, kvCache, scope) open class FullKeyValueCacheRepo( - override val parentRepo: KeyValueRepo, - override val kvCache: KeyValueRepo, + protected val kvRepo: KeyValueRepo, + kvCache: KeyValueRepo, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), skipStartInvalidate: Boolean = false, - override val locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), + locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), ) : //FullWriteKeyValueCacheRepo(parentRepo, kvCache, scope), KeyValueRepo, - WriteKeyValueRepo by parentRepo, + WriteKeyValueRepo by kvRepo, FullReadKeyValueCacheRepo( - parentRepo, + kvRepo, kvCache, locker ) { @@ -151,7 +151,7 @@ open class FullKeyValueCacheRepo( } } - override suspend fun unsetWithValues(toUnset: List) = parentRepo.unsetWithValues(toUnset) + override suspend fun unsetWithValues(toUnset: List) = kvRepo.unsetWithValues(toUnset) protected open suspend fun initialInvalidate() { try { @@ -165,13 +165,13 @@ open class FullKeyValueCacheRepo( } override suspend fun clear() { - parentRepo.clear() + kvRepo.clear() kvCache.clear() } override suspend fun set(toSet: Map) { locker.withWriteLock { - parentRepo.set(toSet) + kvRepo.set(toSet) kvCache.set( toSet.filter { parentRepo.contains(it.key) @@ -182,7 +182,7 @@ open class FullKeyValueCacheRepo( override suspend fun unset(toUnset: List) { locker.withWriteLock { - parentRepo.unset(toUnset) + kvRepo.unset(toUnset) kvCache.unset( toUnset.filter { !parentRepo.contains(it) diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValuesCacheRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValuesCacheRepo.kt index 97e5bd4d5b8..b4856684916 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValuesCacheRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/FullKeyValuesCacheRepo.kt @@ -16,9 +16,9 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* open class FullReadKeyValuesCacheRepo( - protected open val parentRepo: ReadKeyValuesRepo, - protected open val kvCache: KeyValueRepo>, - protected open val locker: SmartRWLocker = SmartRWLocker(), + protected val parentRepo: ReadKeyValuesRepo, + protected val kvCache: KeyValueRepo>, + protected val locker: SmartRWLocker = SmartRWLocker(), ) : ReadKeyValuesRepo, FullCacheRepo { protected suspend inline fun doOrTakeAndActualize( action: KeyValueRepo>.() -> Optional, @@ -165,7 +165,7 @@ fun ReadKeyValuesRepo.cached( open class FullWriteKeyValuesCacheRepo( parentRepo: WriteKeyValuesRepo, - protected open val kvCache: KeyValueRepo>, + protected val kvCache: KeyValueRepo>, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), protected val locker: SmartRWLocker = SmartRWLocker(), ) : WriteKeyValuesRepo by parentRepo, FullCacheRepo { @@ -200,14 +200,14 @@ fun WriteKeyValuesRepo.caching( ) = FullWriteKeyValuesCacheRepo(this, kvCache, scope, locker) open class FullKeyValuesCacheRepo( - override val parentRepo: KeyValuesRepo, - override val kvCache: KeyValueRepo>, + protected val kvsRepo: KeyValuesRepo, + kvCache: KeyValueRepo>, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), skipStartInvalidate: Boolean = false, - override val locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), + locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), ) : KeyValuesRepo, - FullReadKeyValuesCacheRepo(parentRepo, kvCache, locker), - WriteKeyValuesRepo by parentRepo { + FullReadKeyValuesCacheRepo(kvsRepo, kvCache, locker), + WriteKeyValuesRepo by kvsRepo { init { if (!skipStartInvalidate) { scope.launchLoggingDropExceptions { @@ -241,7 +241,7 @@ open class FullKeyValuesCacheRepo( override suspend fun set(toSet: Map>) { locker.withWriteLock { - parentRepo.set(toSet) + kvsRepo.set(toSet) kvCache.set( toSet.filter { parentRepo.contains(it.key) @@ -252,7 +252,7 @@ open class FullKeyValuesCacheRepo( override suspend fun add(toAdd: Map>) { locker.withWriteLock { - parentRepo.add(toAdd) + kvsRepo.add(toAdd) toAdd.forEach { val filtered = it.value.filter { v -> parentRepo.contains(it.key, v) @@ -269,7 +269,7 @@ open class FullKeyValuesCacheRepo( override suspend fun remove(toRemove: Map>) { locker.withWriteLock { - parentRepo.remove(toRemove) + kvsRepo.remove(toRemove) toRemove.forEach { val filtered = it.value.filter { v -> !parentRepo.contains(it.key, v) @@ -291,7 +291,7 @@ open class FullKeyValuesCacheRepo( override suspend fun clear(k: Key) { locker.withWriteLock { - parentRepo.clear(k) + kvsRepo.clear(k) if (parentRepo.contains(k)) { return@withWriteLock } diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullCRUDCacheRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullCRUDCacheRepo.kt index 766a6adcc82..d371d671f9d 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullCRUDCacheRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullCRUDCacheRepo.kt @@ -1,24 +1,21 @@ package dev.inmo.micro_utils.repos.cache.full.direct -import dev.inmo.micro_utils.common.* import dev.inmo.micro_utils.coroutines.SmartRWLocker import dev.inmo.micro_utils.coroutines.launchLoggingDropExceptions import dev.inmo.micro_utils.coroutines.withReadAcquire -import dev.inmo.micro_utils.coroutines.withWriteLock import dev.inmo.micro_utils.pagination.Pagination import dev.inmo.micro_utils.pagination.PaginationResult import dev.inmo.micro_utils.repos.* import dev.inmo.micro_utils.repos.cache.* -import dev.inmo.micro_utils.repos.cache.util.ActualizeAllClearMode import dev.inmo.micro_utils.repos.cache.util.actualizeAll import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers open class DirectFullReadCRUDCacheRepo( - protected open val parentRepo: ReadCRUDRepo, - protected open val kvCache: KeyValueRepo, - protected open val locker: SmartRWLocker = SmartRWLocker(), - protected open val idGetter: (ObjectType) -> IdType + protected val parentRepo: ReadCRUDRepo, + protected val kvCache: KeyValueRepo, + protected val locker: SmartRWLocker = SmartRWLocker(), + protected val idGetter: (ObjectType) -> IdType ) : ReadCRUDRepo, DirectFullCacheRepo { protected open suspend fun actualizeAll() { kvCache.actualizeAll(parentRepo, locker = locker) @@ -60,20 +57,20 @@ fun ReadCRUDRepo.directlyCached( ) = DirectFullReadCRUDCacheRepo(this, kvCache, locker, idGetter) open class DirectFullCRUDCacheRepo( - override val parentRepo: CRUDRepo, - override val kvCache: KeyValueRepo, + protected val crudRepo: CRUDRepo, + kvCache: KeyValueRepo, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), skipStartInvalidate: Boolean = false, - override val locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), + locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), idGetter: (ObjectType) -> IdType ) : DirectFullReadCRUDCacheRepo( - parentRepo, + crudRepo, kvCache, locker, idGetter ), WriteCRUDRepo by WriteCRUDCacheRepo( - parentRepo, + crudRepo, kvCache, scope, locker, diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullKeyValueCacheRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullKeyValueCacheRepo.kt index bd13337fc75..1da59594bf8 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullKeyValueCacheRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullKeyValueCacheRepo.kt @@ -18,9 +18,9 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach open class DirectFullReadKeyValueCacheRepo( - protected open val parentRepo: ReadKeyValueRepo, - protected open val kvCache: KeyValueRepo, - protected open val locker: SmartRWLocker = SmartRWLocker() + protected val parentRepo: ReadKeyValueRepo, + protected val kvCache: KeyValueRepo, + protected val locker: SmartRWLocker = SmartRWLocker() ) : DirectFullCacheRepo, ReadKeyValueRepo { protected open suspend fun actualizeAll() { kvCache.actualizeAll(parentRepo, locker) @@ -65,8 +65,8 @@ fun ReadKeyValueRepo.directlyCached( ) = DirectFullReadKeyValueCacheRepo(this, kvCache, locker) open class DirectFullWriteKeyValueCacheRepo( - protected open val parentRepo: WriteKeyValueRepo, - protected open val kvCache: KeyValueRepo, + protected val parentRepo: WriteKeyValueRepo, + protected val kvCache: KeyValueRepo, protected val locker: SmartRWLocker = SmartRWLocker(), scope: CoroutineScope = CoroutineScope(Dispatchers.Default), ) : DirectFullCacheRepo, WriteKeyValueRepo by parentRepo { @@ -101,20 +101,20 @@ fun WriteKeyValueRepo.directlyCached( ) = DirectFullWriteKeyValueCacheRepo(this, kvCache, scope = scope) open class DirectFullKeyValueCacheRepo( - override val parentRepo: KeyValueRepo, - override val kvCache: KeyValueRepo, + protected val kvRepo: KeyValueRepo, + kvCache: KeyValueRepo, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), skipStartInvalidate: Boolean = false, - override val locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), + locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), ) : DirectFullCacheRepo, KeyValueRepo , WriteKeyValueRepo by DirectFullWriteKeyValueCacheRepo( - parentRepo, + kvRepo, kvCache, locker, scope ), - DirectFullReadKeyValueCacheRepo(parentRepo, kvCache, locker) { + DirectFullReadKeyValueCacheRepo(kvRepo, kvCache, locker) { init { if (!skipStartInvalidate) { scope.launchLoggingDropExceptions { @@ -140,15 +140,15 @@ open class DirectFullKeyValueCacheRepo( } override suspend fun clear() { - parentRepo.clear() + kvRepo.clear() kvCache.clear() } - override suspend fun unsetWithValues(toUnset: List) = parentRepo.unsetWithValues(toUnset) + override suspend fun unsetWithValues(toUnset: List) = kvRepo.unsetWithValues(toUnset) override suspend fun set(toSet: Map) { locker.withWriteLock { - parentRepo.set(toSet) + kvRepo.set(toSet) kvCache.set( toSet.filter { parentRepo.contains(it.key) @@ -159,7 +159,7 @@ open class DirectFullKeyValueCacheRepo( override suspend fun unset(toUnset: List) { locker.withWriteLock { - parentRepo.unset(toUnset) + kvRepo.unset(toUnset) kvCache.unset( toUnset.filter { !parentRepo.contains(it) diff --git a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullKeyValuesCacheRepo.kt b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullKeyValuesCacheRepo.kt index 9f85bbf18f3..a70543c7dc0 100644 --- a/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullKeyValuesCacheRepo.kt +++ b/repos/cache/src/commonMain/kotlin/dev/inmo/micro_utils/repos/cache/full/direct/DirectFullKeyValuesCacheRepo.kt @@ -15,9 +15,9 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* open class DirectFullReadKeyValuesCacheRepo( - protected open val parentRepo: ReadKeyValuesRepo, - protected open val kvCache: KeyValueRepo>, - protected open val locker: SmartRWLocker = SmartRWLocker(), + protected val parentRepo: ReadKeyValuesRepo, + protected val kvCache: KeyValueRepo>, + protected val locker: SmartRWLocker = SmartRWLocker(), ) : ReadKeyValuesRepo, DirectFullCacheRepo { protected open suspend fun actualizeKey(k: Key) { kvCache.actualizeAll(locker = locker, clearMode = ActualizeAllClearMode.Never) { @@ -100,7 +100,7 @@ fun ReadKeyValuesRepo.directlyCached( open class DirectFullWriteKeyValuesCacheRepo( parentRepo: WriteKeyValuesRepo, - protected open val kvCache: KeyValueRepo>, + protected val kvCache: KeyValueRepo>, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), protected val locker: SmartRWLocker = SmartRWLocker(), ) : WriteKeyValuesRepo by parentRepo, DirectFullCacheRepo { @@ -135,14 +135,14 @@ fun WriteKeyValuesRepo.directlyCached( ) = DirectFullWriteKeyValuesCacheRepo(this, kvCache, scope, locker) open class DirectFullKeyValuesCacheRepo( - override val parentRepo: KeyValuesRepo, - override val kvCache: KeyValueRepo>, + protected val kvsRepo: KeyValuesRepo, + kvCache: KeyValueRepo>, scope: CoroutineScope = CoroutineScope(Dispatchers.Default), skipStartInvalidate: Boolean = false, - override val locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), + locker: SmartRWLocker = SmartRWLocker(writeIsLocked = !skipStartInvalidate), ) : KeyValuesRepo, - DirectFullReadKeyValuesCacheRepo(parentRepo, kvCache, locker), - WriteKeyValuesRepo by parentRepo { + DirectFullReadKeyValuesCacheRepo(kvsRepo, kvCache, locker), + WriteKeyValuesRepo by kvsRepo { init { if (!skipStartInvalidate) { scope.launchLoggingDropExceptions { @@ -176,7 +176,7 @@ open class DirectFullKeyValuesCacheRepo( override suspend fun set(toSet: Map>) { locker.withWriteLock { - parentRepo.set(toSet) + kvsRepo.set(toSet) kvCache.set( toSet.filter { parentRepo.contains(it.key) @@ -187,7 +187,7 @@ open class DirectFullKeyValuesCacheRepo( override suspend fun add(toAdd: Map>) { locker.withWriteLock { - parentRepo.add(toAdd) + kvsRepo.add(toAdd) toAdd.forEach { val filtered = it.value.filter { v -> parentRepo.contains(it.key, v) @@ -204,7 +204,7 @@ open class DirectFullKeyValuesCacheRepo( override suspend fun remove(toRemove: Map>) { locker.withWriteLock { - parentRepo.remove(toRemove) + kvsRepo.remove(toRemove) toRemove.forEach { val filtered = it.value.filter { v -> !parentRepo.contains(it.key, v) @@ -226,7 +226,7 @@ open class DirectFullKeyValuesCacheRepo( override suspend fun clear(k: Key) { locker.withWriteLock { - parentRepo.clear(k) + kvsRepo.clear(k) if (parentRepo.contains(k)) { return@withWriteLock }