create EventStreamInMemoryTest

This commit is contained in:
2025-03-29 01:00:34 +01:00
parent cee57ad2a3
commit a427bf88c7
7 changed files with 115 additions and 14 deletions

View File

@@ -9,11 +9,18 @@ import java.util.concurrent.ConcurrentLinkedQueue
*
* All methods are implemented.
*/
class EventStreamInMemory<E : Event<*>> : EventStream<E> {
class EventStreamInMemory<E : Event<ID>, ID : AggregateId>(
val aggregateId: ID,
) : EventStream<E> {
private val logger = KotlinLogging.logger {}
private val events: Queue<E> = ConcurrentLinkedQueue()
override fun publish(event: E) {
if (event.aggregateId != aggregateId) {
throw EventStreamPublishException(
"You cannot publish this event in this stream because it has a different aggregateId!",
)
}
if (events.none { it.eventId == event.eventId }) {
events.add(event)
logger.info { "Event published" }