From 0fdb072385bd752260af1578fb1c2b7c273158d0 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 8 Nov 2020 20:45:45 +0600 Subject: [PATCH] update: Replace channels by sharedflows in exposed CRUD realization --- CHANGELOG.md | 4 ++++ .../repos/exposed/AbstractExposedCRUDRepo.kt | 4 +--- .../exposed/AbstractExposedWriteCRUDRepo.kt | 23 +++++++++---------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97fda9d59cb..bcc011cf9cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.2.8 +* `Repos`: + * `Exposed`: + * CRUD realizations replaced their channels to shared flows + ## 0.2.7 * `Versions`: diff --git a/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedCRUDRepo.kt b/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedCRUDRepo.kt index 1eedb55510e..a48d95d7199 100644 --- a/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedCRUDRepo.kt +++ b/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedCRUDRepo.kt @@ -1,9 +1,7 @@ package dev.inmo.micro_utils.repos.exposed -import kotlinx.coroutines.channels.Channel - abstract class AbstractExposedCRUDRepo( - flowsChannelsSize: Int = Channel.BUFFERED, + flowsChannelsSize: Int = 0, tableName: String = "" ) : AbstractExposedWriteCRUDRepo( diff --git a/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedWriteCRUDRepo.kt b/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedWriteCRUDRepo.kt index 5e68906daa2..869a8a2c50c 100644 --- a/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedWriteCRUDRepo.kt +++ b/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/AbstractExposedWriteCRUDRepo.kt @@ -3,28 +3,27 @@ package dev.inmo.micro_utils.repos.exposed import dev.inmo.micro_utils.repos.UpdatedValuePair import dev.inmo.micro_utils.repos.WriteStandardCRUDRepo import kotlinx.coroutines.channels.BroadcastChannel -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.* import org.jetbrains.exposed.sql.* import org.jetbrains.exposed.sql.statements.InsertStatement import org.jetbrains.exposed.sql.statements.UpdateStatement import org.jetbrains.exposed.sql.transactions.transaction abstract class AbstractExposedWriteCRUDRepo( - flowsChannelsSize: Int = 64, + flowsChannelsSize: Int = 0, tableName: String = "" ) : AbstractExposedReadCRUDRepo(tableName), ExposedCRUDRepo, WriteStandardCRUDRepo { - protected val newObjectsChannel = BroadcastChannel(flowsChannelsSize) - protected val updateObjectsChannel = BroadcastChannel(flowsChannelsSize) - protected val deleteObjectsIdsChannel = BroadcastChannel(flowsChannelsSize) + protected val newObjectsChannel = MutableSharedFlow(flowsChannelsSize) + protected val updateObjectsChannel = MutableSharedFlow(flowsChannelsSize) + protected val deleteObjectsIdsChannel = MutableSharedFlow(flowsChannelsSize) - override val newObjectsFlow: Flow = newObjectsChannel.asFlow() - override val updatedObjectsFlow: Flow = updateObjectsChannel.asFlow() - override val deletedObjectsIdsFlow: Flow = deleteObjectsIdsChannel.asFlow() + override val newObjectsFlow: Flow = newObjectsChannel.asSharedFlow() + override val updatedObjectsFlow: Flow = updateObjectsChannel.asSharedFlow() + override val deletedObjectsIdsFlow: Flow = deleteObjectsIdsChannel.asSharedFlow() abstract val InsertStatement.asObject: ObjectType abstract val selectByIds: SqlExpressionBuilder.(List) -> Op @@ -45,7 +44,7 @@ abstract class AbstractExposedWriteCRUDRepo( values.map { value -> createWithoutNotification(value) } }.also { it.forEach { - newObjectsChannel.send(it) + newObjectsChannel.emit(it) } } } @@ -75,7 +74,7 @@ abstract class AbstractExposedWriteCRUDRepo( onBeforeUpdate(listOf(id to value)) return updateWithoutNotification(id, value).also { if (it != null) { - updateObjectsChannel.send(it) + updateObjectsChannel.emit(it) } } } @@ -89,7 +88,7 @@ abstract class AbstractExposedWriteCRUDRepo( } as List ).also { it.forEach { - updateObjectsChannel.send(it) + updateObjectsChannel.emit(it) } } }