business setter configurator things
This commit is contained in:
publishing
api
src
commonMain
kotlin
dev
inmo
postssystem
ktor
client
src
commonMain
kotlin
com
insanusmokrassar
postssystem
publishing
ktor
client
common
src
commonMain
kotlin
com
insanusmokrassar
postssystem
publishing
server
src
jvmMain
kotlin
com
insanusmokrassar
postssystem
publishing
ktor
@ -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,
|
||||
|
27
publishing/api/src/commonMain/kotlin/dev/inmo/postssystem/core/publishing/TriggerSetterService.kt
Normal file
27
publishing/api/src/commonMain/kotlin/dev/inmo/postssystem/core/publishing/TriggerSetterService.kt
Normal 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
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user