diff --git a/src/main/kotlin/com/fraktalio/example/fmodelspringdemo/adapter/web/rsocket/AggregateRsocketCommandController.kt b/src/main/kotlin/com/fraktalio/example/fmodelspringdemo/adapter/web/rsocket/AggregateRsocketCommandController.kt index d93b043..f80b8c6 100644 --- a/src/main/kotlin/com/fraktalio/example/fmodelspringdemo/adapter/web/rsocket/AggregateRsocketCommandController.kt +++ b/src/main/kotlin/com/fraktalio/example/fmodelspringdemo/adapter/web/rsocket/AggregateRsocketCommandController.kt @@ -3,18 +3,20 @@ package com.fraktalio.example.fmodelspringdemo.adapter.web.rsocket import com.fraktalio.example.fmodelspringdemo.application.Aggregate import com.fraktalio.example.fmodelspringdemo.domain.Command import com.fraktalio.example.fmodelspringdemo.domain.Event -import com.fraktalio.fmodel.application.handleOptimistically +import com.fraktalio.fmodel.application.handleOptimisticallyWithMetaData import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import org.springframework.messaging.handler.annotation.MessageMapping import org.springframework.messaging.handler.annotation.Payload import org.springframework.stereotype.Controller +import java.util.* @Controller class AggregateRsocketCommandController(private val aggregate: Aggregate) { @OptIn(ExperimentalCoroutinesApi::class) @MessageMapping("commands") fun handleCommand(@Payload commands: Flow): Flow = - aggregate.handleOptimistically(commands).map { it.first } + aggregate.handleOptimisticallyWithMetaData(commands.map { Pair(it, mapOf("commandId" to UUID.randomUUID())) }) + .map { it.first } } \ No newline at end of file diff --git a/src/test/kotlin/com/fraktalio/example/fmodelspringdemo/application/AggregateTest.kt b/src/test/kotlin/com/fraktalio/example/fmodelspringdemo/application/AggregateTest.kt index daca443..d018b6a 100644 --- a/src/test/kotlin/com/fraktalio/example/fmodelspringdemo/application/AggregateTest.kt +++ b/src/test/kotlin/com/fraktalio/example/fmodelspringdemo/application/AggregateTest.kt @@ -1,7 +1,7 @@ package com.fraktalio.example.fmodelspringdemo.application import com.fraktalio.example.fmodelspringdemo.domain.* -import com.fraktalio.fmodel.application.publishOptimisticallyTo +import com.fraktalio.fmodel.application.publishOptimisticallyWithMetaDataTo import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.FlowPreview @@ -16,6 +16,7 @@ import org.springframework.boot.test.context.SpringBootTest import org.springframework.test.context.TestConstructor import org.springframework.test.context.TestConstructor.AutowireMode.ALL import java.math.BigDecimal +import java.util.* @SpringBootTest @@ -47,7 +48,8 @@ class AggregateTest(private val aggregate: Aggregate) { val events = flowOf(createRestaurantCommand, changeRestaurantMenuCommand, placeOrderCommand, markOrderAsPreparedCommand) - .publishOptimisticallyTo(aggregate) + .map { Pair(it, mapOf("commandId" to UUID.randomUUID())) } + .publishOptimisticallyWithMetaDataTo(aggregate) .map { it.first } .toList()