diff --git a/src/main/kotlin/ltd/hlaeja/service/PublicEventService.kt b/src/main/kotlin/ltd/hlaeja/service/PublicEventService.kt new file mode 100644 index 0000000..53b346f --- /dev/null +++ b/src/main/kotlin/ltd/hlaeja/service/PublicEventService.kt @@ -0,0 +1,25 @@ +package ltd.hlaeja.service + +import io.github.oshai.kotlinlogging.KotlinLogging +import ltd.hlaeja.entity.AccountEntity +import ltd.hlaeja.library.accountRegistry.event.AccountMessage +import org.springframework.kafka.core.KafkaTemplate +import org.springframework.stereotype.Service +import reactor.core.publisher.Mono + +private val log = KotlinLogging.logger {} + +@Service +class PublicEventService( + private val kafkaTemplate: KafkaTemplate, +) { + + fun updateAccount( + account: AccountEntity, + changes: List, + ): Mono = Mono + .fromFuture(kafkaTemplate.send("account", "change", AccountMessage(account.id!!, changes))) + .doOnSuccess { log.trace { "Sent Kafka created event for user ${account.id}" } } + .doOnError { e -> log.error(e) { "Failed to send Kafka event" } } + .thenReturn(account) +}