28 lines
957 B
Kotlin
28 lines
957 B
Kotlin
package eventDemo.contexts.game.domain.events
|
|
|
|
import eventDemo.contexts.game.domain.game.GameId
|
|
import eventDemo.contexts.game.domain.game.Player
|
|
import eventDemo.contexts.game.infrastructure.persistence.serializers.EventIdSerializer
|
|
import eventDemo.contexts.game.infrastructure.persistence.serializers.PlayerIdSerializer
|
|
import eventDemo.libs.eventSource.EventId
|
|
import kotlinx.datetime.Clock
|
|
import kotlinx.datetime.Instant
|
|
import kotlinx.serialization.Serializable
|
|
import java.util.UUID
|
|
|
|
/**
|
|
* This [GameEvent] is sent when a player is ready.
|
|
*/
|
|
@Serializable
|
|
data class PlayerReadyEvent(
|
|
override val aggregateId: GameId,
|
|
@Serializable(with = PlayerIdSerializer::class)
|
|
override val playerId: Player.PlayerId,
|
|
override val version: Int,
|
|
) : GameEvent,
|
|
PlayerActionEvent {
|
|
@Serializable(with = EventIdSerializer::class)
|
|
override val eventId: EventId = EventId(UUID.randomUUID())
|
|
override val createdAt: Instant = Clock.System.now()
|
|
}
|