business setter configurator things

This commit is contained in:
2020-11-28 22:38:40 +06:00
parent 4b6544131f
commit c959da084a
6 changed files with 95 additions and 23 deletions

View File

@@ -24,11 +24,11 @@ interface WritePublishingRegistrar {
): Boolean
}
interface PublishingRegistrar : ReadPublishingRegistrar, WritePublishingRegistrar
interface PublishingKeysRegistrar : ReadPublishingRegistrar, WritePublishingRegistrar
class BusinessPublishingRegistrar(
class BusinessPublishingKeysRegistrar(
private val repo: PublishingKeysRepo
) : PublishingRegistrar {
) : PublishingKeysRegistrar {
private val unregisteredKeysChannel: BroadcastChannel<TriggerControlKey> = BroadcastChannel(Channel.BUFFERED)
override val unregisteredKeysFlow: Flow<TriggerControlKey> = unregisteredKeysChannel.asFlow()

View File

@@ -8,7 +8,7 @@ class PublishingService(
private val postsRepo: PostsRepo,
private val publishedPostsRepo: PublishedPostsWriteRepo,
private val keysRepo: PublishingKeysRepo
) : PublishingRegistrar by BusinessPublishingRegistrar(
) : PublishingKeysRegistrar by BusinessPublishingKeysRegistrar(
keysRepo
), PublishingTrigger by BusinessPublishingTrigger(
postsRepo,

View File

@@ -0,0 +1,27 @@
package dev.inmo.postssystem.core.publishing
import dev.inmo.postssystem.core.post.PostId
class TriggerSetterServiceUnknownTriggerIdException(
triggerId: TriggerId
) : IllegalArgumentException(
"Unknown trigger id $triggerId"
)
interface TriggerSetterService {
@Throws(TriggerSetterServiceUnknownTriggerIdException::class)
suspend fun setTrigger(postId: PostId, triggerId: TriggerId): Boolean
}
class BusinessTriggerSetterService(
private val postKeyGenerator: PostKeyGenerator,
private val publishingKeyReceiverGetter: PublishingKeyReceiverGetter
) : TriggerSetterService {
override suspend fun setTrigger(postId: PostId, triggerId: TriggerId): Boolean {
val publishingKeyReceiver = publishingKeyReceiverGetter(triggerId) ?: throw TriggerSetterServiceUnknownTriggerIdException(triggerId)
val triggerControlKey = postKeyGenerator(postId, triggerId)
publishingKeyReceiver.acceptKey(postId, triggerControlKey)
return true
}
}