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
publishing
api
src
commonMain
ktor
client
src
commonMain
kotlin
com
insanusmokrassar
postssystem
publishing
common
src
commonMain
kotlin
com
insanusmokrassar
postssystem
server
src
jvmMain
kotlin
com
insanusmokrassar
postssystem
publishing

@ -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
}
}