business setter configurator things
This commit is contained in:
@@ -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()
|
||||
|
@@ -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,
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user