From 02c3d397ad96bf1da295947eccc26400b4b6d95e Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 29 Oct 2021 13:40:53 +0600 Subject: [PATCH] solution of #104 --- CHANGELOG.md | 8 ++++++++ .../repos/crud/AbstractMutableAndroidCRUDRepo.kt | 12 +++++++----- .../repos/exposed/AbstractExposedWriteCRUDRepo.kt | 9 +++++---- .../repos/exposed/keyvalue/ExposedKeyValueRepo.kt | 4 ++-- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0b608b203f..38d6e7ccd84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ * `Serialization`: * `TypedSerializer` * New factory fun which accept vararg pairs of type and its serializer +* `Repos`: + * `Common` (`Android`): + * `AbstractMutableAndroidCRUDRepo` flows now will have extra buffer capacity instead of reply. It means that + android crud repo _WILL NOT_ send previous events to the + * `Exposed`: + * New parameter `AbstractExposedWriteCRUDRepo#replyCacheInFlows` + * KeyValue realization `ExposedKeyValueRepo` properties `_onNewValue` and `_onValueRemoved` now are available in + inheritors ## 0.7.3 diff --git a/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/crud/AbstractMutableAndroidCRUDRepo.kt b/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/crud/AbstractMutableAndroidCRUDRepo.kt index fc016c19a5c..29103d3f2ab 100644 --- a/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/crud/AbstractMutableAndroidCRUDRepo.kt +++ b/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/crud/AbstractMutableAndroidCRUDRepo.kt @@ -6,13 +6,15 @@ import dev.inmo.micro_utils.repos.* import kotlinx.coroutines.flow.* abstract class AbstractMutableAndroidCRUDRepo( - helper: StandardSQLHelper + helper: StandardSQLHelper, + replyInFlows: Int = 0, + extraBufferCapacityInFlows: Int = 64 ) : WriteStandardCRUDRepo, AbstractAndroidCRUDRepo(helper), StandardCRUDRepo { - protected val newObjectsChannel = MutableSharedFlow(64) - protected val updateObjectsChannel = MutableSharedFlow(64) - protected val deleteObjectsIdsChannel = MutableSharedFlow(64) + protected val newObjectsChannel = MutableSharedFlow(replyInFlows, extraBufferCapacityInFlows) + protected val updateObjectsChannel = MutableSharedFlow(replyInFlows, extraBufferCapacityInFlows) + protected val deleteObjectsIdsChannel = MutableSharedFlow(replyInFlows, extraBufferCapacityInFlows) override val newObjectsFlow: Flow = newObjectsChannel.asSharedFlow() override val updatedObjectsFlow: Flow = updateObjectsChannel.asSharedFlow() override val deletedObjectsIdsFlow: Flow = deleteObjectsIdsChannel.asSharedFlow() @@ -102,4 +104,4 @@ abstract class AbstractMutableAndroidCRUDRepo( flowsChannelsSize: Int = 0, - tableName: String = "" + tableName: String = "", + replyCacheInFlows: Int = 0 ) : AbstractExposedReadCRUDRepo(tableName), ExposedCRUDRepo, WriteStandardCRUDRepo { - protected val newObjectsChannel = MutableSharedFlow(flowsChannelsSize) - protected val updateObjectsChannel = MutableSharedFlow(flowsChannelsSize) - protected val deleteObjectsIdsChannel = MutableSharedFlow(flowsChannelsSize) + protected val newObjectsChannel = MutableSharedFlow(replyCacheInFlows, flowsChannelsSize) + protected val updateObjectsChannel = MutableSharedFlow(replyCacheInFlows, flowsChannelsSize) + protected val deleteObjectsIdsChannel = MutableSharedFlow(replyCacheInFlows, flowsChannelsSize) override val newObjectsFlow: Flow = newObjectsChannel.asSharedFlow() override val updatedObjectsFlow: Flow = updateObjectsChannel.asSharedFlow() diff --git a/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/keyvalue/ExposedKeyValueRepo.kt b/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/keyvalue/ExposedKeyValueRepo.kt index 74a2bef1c9d..ee50149845a 100644 --- a/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/keyvalue/ExposedKeyValueRepo.kt +++ b/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/keyvalue/ExposedKeyValueRepo.kt @@ -19,8 +19,8 @@ open class ExposedKeyValueRepo( valueColumnAllocator, tableName ) { - private val _onNewValue = MutableSharedFlow>() - private val _onValueRemoved = MutableSharedFlow() + protected val _onNewValue = MutableSharedFlow>() + protected val _onValueRemoved = MutableSharedFlow() override val onNewValue: Flow> = _onNewValue.asSharedFlow() override val onValueRemoved: Flow = _onValueRemoved.asSharedFlow()