chore: upgrade versions and rename folders

This commit is contained in:
2026-07-20 19:54:58 +02:00
parent 7fb488ab56
commit 78956ce84e
113 changed files with 471 additions and 470 deletions
@@ -1,7 +1,7 @@
package eventDemo.adapter.infrastructureLayer.event
package eventDemo.adapter.infrastructure.event
import eventDemo.business.event.GameEventBus
import eventDemo.business.event.event.GameEvent
import eventDemo.domain.event.GameEventBus
import eventDemo.domain.event.event.GameEvent
import eventDemo.libs.bus.Bus
import eventDemo.libs.bus.BusInMemory
import java.util.UUID
@@ -1,8 +1,8 @@
package eventDemo.adapter.infrastructureLayer.event
package eventDemo.adapter.infrastructure.event
import com.rabbitmq.client.ConnectionFactory
import eventDemo.business.event.GameEventBus
import eventDemo.business.event.event.GameEvent
import eventDemo.domain.event.GameEventBus
import eventDemo.domain.event.event.GameEvent
import eventDemo.libs.bus.Bus
import eventDemo.libs.bus.BusInRabbitMQ
import kotlinx.serialization.json.Json
@@ -1,8 +1,8 @@
package eventDemo.adapter.infrastructureLayer.event
package eventDemo.adapter.infrastructure.event
import eventDemo.business.entity.GameId
import eventDemo.business.event.GameEventStore
import eventDemo.business.event.event.GameEvent
import eventDemo.domain.entity.GameId
import eventDemo.domain.event.GameEventStore
import eventDemo.domain.event.event.GameEvent
import eventDemo.libs.event.EventStore
import eventDemo.libs.event.EventStoreInMemory
@@ -1,8 +1,8 @@
package eventDemo.adapter.infrastructureLayer.event
package eventDemo.adapter.infrastructure.event
import eventDemo.business.entity.GameId
import eventDemo.business.event.GameEventStore
import eventDemo.business.event.event.GameEvent
import eventDemo.domain.entity.GameId
import eventDemo.domain.event.GameEventStore
import eventDemo.domain.event.event.GameEvent
import eventDemo.libs.event.EventStore
import eventDemo.libs.event.EventStoreInPostgresql
import kotlinx.serialization.json.Json
@@ -1,12 +1,12 @@
package eventDemo.adapter.infrastructureLayer.event.projection
package eventDemo.adapter.infrastructure.event.projection
import eventDemo.business.entity.GameId
import eventDemo.business.event.GameEventBus
import eventDemo.business.event.projection.GameList
import eventDemo.business.event.projection.GameListRepository
import eventDemo.business.event.projection.GameProjectionBus
import eventDemo.business.event.projection.GameState
import eventDemo.business.event.projection.apply
import eventDemo.domain.entity.GameId
import eventDemo.domain.event.GameEventBus
import eventDemo.domain.event.projection.GameList
import eventDemo.domain.event.projection.GameListRepository
import eventDemo.domain.event.projection.GameProjectionBus
import eventDemo.domain.event.projection.GameState
import eventDemo.domain.event.projection.apply
import eventDemo.libs.event.projection.ProjectionRepositoryInMemory
import io.github.oshai.kotlinlogging.withLoggingContext
@@ -1,12 +1,12 @@
package eventDemo.adapter.infrastructureLayer.event.projection
package eventDemo.adapter.infrastructure.event.projection
import eventDemo.business.entity.GameId
import eventDemo.business.event.GameEventBus
import eventDemo.business.event.projection.GameList
import eventDemo.business.event.projection.GameListRepository
import eventDemo.business.event.projection.GameProjectionBus
import eventDemo.business.event.projection.GameState
import eventDemo.business.event.projection.apply
import eventDemo.domain.entity.GameId
import eventDemo.domain.event.GameEventBus
import eventDemo.domain.event.projection.GameList
import eventDemo.domain.event.projection.GameListRepository
import eventDemo.domain.event.projection.GameProjectionBus
import eventDemo.domain.event.projection.GameState
import eventDemo.domain.event.projection.apply
import eventDemo.libs.event.projection.ProjectionRepositoryInRedis
import io.github.oshai.kotlinlogging.withLoggingContext
import kotlinx.serialization.json.Json
@@ -1,7 +1,7 @@
package eventDemo.adapter.infrastructureLayer.event.projection
package eventDemo.adapter.infrastructure.event.projection
import eventDemo.business.event.projection.GameProjection
import eventDemo.business.event.projection.GameProjectionBus
import eventDemo.domain.event.projection.GameProjection
import eventDemo.domain.event.projection.GameProjectionBus
import eventDemo.libs.bus.Bus
import eventDemo.libs.bus.BusInMemory
import java.util.UUID
@@ -1,8 +1,8 @@
package eventDemo.adapter.infrastructureLayer.event.projection
package eventDemo.adapter.infrastructure.event.projection
import com.rabbitmq.client.ConnectionFactory
import eventDemo.business.event.projection.GameProjection
import eventDemo.business.event.projection.GameProjectionBus
import eventDemo.domain.event.projection.GameProjection
import eventDemo.domain.event.projection.GameProjectionBus
import eventDemo.libs.bus.Bus
import eventDemo.libs.bus.BusInRabbitMQ
import kotlinx.serialization.json.Json
@@ -1,11 +1,11 @@
package eventDemo.adapter.infrastructureLayer.event.projection
package eventDemo.adapter.infrastructure.event.projection
import eventDemo.business.entity.GameId
import eventDemo.business.event.GameEventBus
import eventDemo.business.event.projection.GameProjectionBus
import eventDemo.business.event.projection.GameState
import eventDemo.business.event.projection.GameStateRepository
import eventDemo.business.event.projection.apply
import eventDemo.domain.entity.GameId
import eventDemo.domain.event.GameEventBus
import eventDemo.domain.event.projection.GameProjectionBus
import eventDemo.domain.event.projection.GameState
import eventDemo.domain.event.projection.GameStateRepository
import eventDemo.domain.event.projection.apply
import eventDemo.libs.event.projection.ProjectionRepositoryInMemory
import io.github.oshai.kotlinlogging.withLoggingContext
@@ -1,11 +1,11 @@
package eventDemo.adapter.infrastructureLayer.event.projection
package eventDemo.adapter.infrastructure.event.projection
import eventDemo.business.entity.GameId
import eventDemo.business.event.GameEventBus
import eventDemo.business.event.projection.GameProjectionBus
import eventDemo.business.event.projection.GameState
import eventDemo.business.event.projection.GameStateRepository
import eventDemo.business.event.projection.apply
import eventDemo.domain.entity.GameId
import eventDemo.domain.event.GameEventBus
import eventDemo.domain.event.projection.GameProjectionBus
import eventDemo.domain.event.projection.GameState
import eventDemo.domain.event.projection.GameStateRepository
import eventDemo.domain.event.projection.apply
import eventDemo.libs.event.projection.ProjectionRepositoryInRedis
import io.github.oshai.kotlinlogging.withLoggingContext
import kotlinx.serialization.json.Json
@@ -1,10 +1,10 @@
package eventDemo.adapter.interfaceLayer.query
package eventDemo.adapter.presenter.query
import eventDemo.business.command.GameCommandHandler
import eventDemo.business.command.command.GameCommand
import eventDemo.business.entity.GameId
import eventDemo.business.event.projection.projectionListener.PlayerNotificationListener
import eventDemo.business.notification.Notification
import eventDemo.domain.command.GameCommandHandler
import eventDemo.domain.command.command.GameCommand
import eventDemo.domain.entity.GameId
import eventDemo.domain.event.projection.projectionListener.PlayerNotificationListener
import eventDemo.domain.notification.Notification
import eventDemo.libs.fromFrameChannel
import eventDemo.libs.toObjectChannel
import io.github.oshai.kotlinlogging.withLoggingContext
@@ -1,6 +1,6 @@
package eventDemo.adapter.interfaceLayer.query
package eventDemo.adapter.presenter.query
import eventDemo.business.event.projection.GameListRepository
import eventDemo.domain.event.projection.GameListRepository
import io.ktor.resources.Resource
import io.ktor.server.auth.authenticate
import io.ktor.server.resources.get
@@ -1,6 +1,6 @@
package eventDemo.adapter.interfaceLayer.query
package eventDemo.adapter.presenter.query
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Player
import io.ktor.server.application.ApplicationCall
import io.ktor.server.auth.jwt.JWTPrincipal
import io.ktor.server.auth.principal
@@ -1,7 +1,7 @@
package eventDemo.adapter.interfaceLayer.query
package eventDemo.adapter.presenter.query
import eventDemo.business.entity.GameId
import eventDemo.business.event.projection.GameStateRepository
import eventDemo.domain.entity.GameId
import eventDemo.domain.event.projection.GameStateRepository
import eventDemo.configuration.serializer.GameIdSerializer
import io.ktor.http.HttpStatusCode
import io.ktor.resources.Resource
@@ -1,27 +0,0 @@
package eventDemo.business.command
import eventDemo.business.command.action.ICantPlay
import eventDemo.business.command.action.IWantToJoinTheGame
import eventDemo.business.command.action.IWantToPlayCard
import eventDemo.business.command.action.IamReadyToPlay
import eventDemo.business.command.command.GameCommand
import eventDemo.business.command.command.ICantPlayCommand
import eventDemo.business.command.command.IWantToJoinTheGameCommand
import eventDemo.business.command.command.IWantToPlayCardCommand
import eventDemo.business.command.command.IamReadyToPlayCommand
import eventDemo.business.event.event.GameEvent
class GameCommandActionRunner(
private val iWantToPlayCard: IWantToPlayCard,
private val iamReadyToPlay: IamReadyToPlay,
private val iWantToJoinTheGame: IWantToJoinTheGame,
private val iCantPlay: ICantPlay,
) {
fun run(command: GameCommand): (version: Int) -> GameEvent =
when (command) {
is IWantToPlayCardCommand -> iWantToPlayCard.run(command)
is IamReadyToPlayCommand -> iamReadyToPlay.run(command)
is IWantToJoinTheGameCommand -> iWantToJoinTheGame.run(command)
is ICantPlayCommand -> iCantPlay.run(command)
}
}
@@ -1,6 +0,0 @@
package eventDemo.business.event
import eventDemo.business.event.event.GameEvent
import eventDemo.libs.bus.Bus
interface GameEventBus : Bus<GameEvent>
@@ -1,7 +0,0 @@
package eventDemo.business.event
import eventDemo.business.entity.GameId
import eventDemo.business.event.event.GameEvent
import eventDemo.libs.event.EventStore
interface GameEventStore : EventStore<GameEvent, GameId>
@@ -1,7 +0,0 @@
package eventDemo.business.event.projection
import eventDemo.business.entity.GameId
interface GameStateRepository {
fun get(gameId: GameId): GameState
}
@@ -1,6 +1,6 @@
package eventDemo.configuration
import eventDemo.configuration.business.configureGameListener
import eventDemo.configuration.domain.configureGameListener
import eventDemo.configuration.ktor.configureHttpRouting
import eventDemo.configuration.ktor.configureKoin
import eventDemo.configuration.ktor.configureSecurity
@@ -1,21 +0,0 @@
package eventDemo.configuration.business
import eventDemo.adapter.infrastructureLayer.event.projection.GameListRepositoryInRedis
import eventDemo.adapter.infrastructureLayer.event.projection.GameStateRepositoryInRedis
import eventDemo.business.command.GameCommandHandler
import eventDemo.business.event.projection.projectionListener.ReactionListener
import org.koin.core.Koin
fun Koin.configureGameListener() {
get<GameCommandHandler>()
.subscribeToBus(get())
get<GameStateRepositoryInRedis>()
.subscribeToBus(get(), get())
get<GameListRepositoryInRedis>()
.subscribeToBus(get(), get())
get<ReactionListener>()
.subscribeToBus(get())
}
@@ -0,0 +1,21 @@
package eventDemo.configuration.domain
import eventDemo.adapter.infrastructure.event.projection.GameListRepositoryInRedis
import eventDemo.adapter.infrastructure.event.projection.GameStateRepositoryInRedis
import eventDemo.domain.command.GameCommandHandler
import eventDemo.domain.event.projection.projectionListener.ReactionListener
import org.koin.core.Koin
fun Koin.configureGameListener() {
get<GameCommandHandler>()
.subscribeToBus(get())
get<GameStateRepositoryInRedis>()
.subscribeToBus(get(), get())
get<GameListRepositoryInRedis>()
.subscribeToBus(get(), get())
get<ReactionListener>()
.subscribeToBus(get())
}
@@ -1,9 +1,9 @@
package eventDemo.configuration.injection
import eventDemo.business.command.action.ICantPlay
import eventDemo.business.command.action.IWantToJoinTheGame
import eventDemo.business.command.action.IWantToPlayCard
import eventDemo.business.command.action.IamReadyToPlay
import eventDemo.domain.command.action.ICantPlay
import eventDemo.domain.command.action.IWantToJoinTheGame
import eventDemo.domain.command.action.IWantToPlayCard
import eventDemo.domain.command.action.IamReadyToPlay
import org.koin.core.module.Module
import org.koin.core.module.dsl.singleOf
@@ -1,10 +1,10 @@
package eventDemo.configuration.injection
import eventDemo.business.command.GameCommandActionRunner
import eventDemo.business.command.GameCommandHandler
import eventDemo.business.event.GameEventHandler
import eventDemo.business.event.projection.projectionListener.PlayerNotificationListener
import eventDemo.business.event.projection.projectionListener.ReactionListener
import eventDemo.domain.command.GameCommandActionRunner
import eventDemo.domain.command.GameCommandHandler
import eventDemo.domain.event.GameEventHandler
import eventDemo.domain.event.projection.projectionListener.PlayerNotificationListener
import eventDemo.domain.event.projection.projectionListener.ReactionListener
import org.koin.core.module.Module
import org.koin.core.module.dsl.singleOf
@@ -3,16 +3,16 @@ package eventDemo.configuration.injection
import com.rabbitmq.client.ConnectionFactory
import com.zaxxer.hikari.HikariConfig
import com.zaxxer.hikari.HikariDataSource
import eventDemo.adapter.infrastructureLayer.event.GameEventBusInRabbinMQ
import eventDemo.adapter.infrastructureLayer.event.GameEventStoreInPostgresql
import eventDemo.adapter.infrastructureLayer.event.projection.GameListRepositoryInRedis
import eventDemo.adapter.infrastructureLayer.event.projection.GameProjectionBusInRabbitMQ
import eventDemo.adapter.infrastructureLayer.event.projection.GameStateRepositoryInRedis
import eventDemo.business.event.GameEventBus
import eventDemo.business.event.GameEventStore
import eventDemo.business.event.projection.GameListRepository
import eventDemo.business.event.projection.GameProjectionBus
import eventDemo.business.event.projection.GameStateRepository
import eventDemo.adapter.infrastructure.event.GameEventBusInRabbinMQ
import eventDemo.adapter.infrastructure.event.GameEventStoreInPostgresql
import eventDemo.adapter.infrastructure.event.projection.GameListRepositoryInRedis
import eventDemo.adapter.infrastructure.event.projection.GameProjectionBusInRabbitMQ
import eventDemo.adapter.infrastructure.event.projection.GameStateRepositoryInRedis
import eventDemo.domain.event.GameEventBus
import eventDemo.domain.event.GameEventStore
import eventDemo.domain.event.projection.GameListRepository
import eventDemo.domain.event.projection.GameProjectionBus
import eventDemo.domain.event.projection.GameStateRepository
import org.koin.core.module.Module
import org.koin.core.module.dsl.singleOf
import org.koin.core.scope.Scope
@@ -2,7 +2,7 @@ package eventDemo.configuration.ktor
import com.auth0.jwt.JWT
import com.auth0.jwt.algorithms.Algorithm
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Player
import io.ktor.http.HttpStatusCode
import io.ktor.server.application.Application
import io.ktor.server.auth.authentication
@@ -1,7 +1,7 @@
package eventDemo.configuration.ktor
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.CommandIdSerializer
import eventDemo.configuration.serializer.GameIdSerializer
import eventDemo.configuration.serializer.PlayerIdSerializer
@@ -1,7 +1,7 @@
package eventDemo.configuration.route
import eventDemo.adapter.interfaceLayer.query.readGamesList
import eventDemo.adapter.interfaceLayer.query.readTheGameState
import eventDemo.adapter.presenter.query.readGamesList
import eventDemo.adapter.presenter.query.readTheGameState
import io.ktor.server.application.Application
import io.ktor.server.routing.routing
import org.koin.ktor.ext.get
@@ -1,8 +1,8 @@
package eventDemo.configuration.route
import eventDemo.adapter.interfaceLayer.query.gameWebSocket
import eventDemo.business.command.GameCommandHandler
import eventDemo.business.event.projection.projectionListener.PlayerNotificationListener
import eventDemo.adapter.presenter.query.gameWebSocket
import eventDemo.domain.command.GameCommandHandler
import eventDemo.domain.event.projection.projectionListener.PlayerNotificationListener
import io.ktor.server.application.Application
import io.ktor.server.routing.routing
import kotlinx.coroutines.DelicateCoroutinesApi
@@ -1,6 +1,6 @@
package eventDemo.configuration.serializer
import eventDemo.business.entity.GameId
import eventDemo.domain.entity.GameId
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
@@ -1,6 +1,6 @@
package eventDemo.configuration.serializer
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Player
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
@@ -1,4 +1,4 @@
package eventDemo.business.command
package eventDemo.domain.command
class CommandException(
override val message: String,
@@ -0,0 +1,27 @@
package eventDemo.domain.command
import eventDemo.domain.command.action.ICantPlay
import eventDemo.domain.command.action.IWantToJoinTheGame
import eventDemo.domain.command.action.IWantToPlayCard
import eventDemo.domain.command.action.IamReadyToPlay
import eventDemo.domain.command.command.GameCommand
import eventDemo.domain.command.command.ICantPlayCommand
import eventDemo.domain.command.command.IWantToJoinTheGameCommand
import eventDemo.domain.command.command.IWantToPlayCardCommand
import eventDemo.domain.command.command.IamReadyToPlayCommand
import eventDemo.domain.event.event.GameEvent
class GameCommandActionRunner(
private val iWantToPlayCard: IWantToPlayCard,
private val iamReadyToPlay: IamReadyToPlay,
private val iWantToJoinTheGame: IWantToJoinTheGame,
private val iCantPlay: ICantPlay,
) {
fun run(command: GameCommand): (version: Int) -> GameEvent =
when (command) {
is IWantToPlayCardCommand -> iWantToPlayCard.run(command)
is IamReadyToPlayCommand -> iamReadyToPlay.run(command)
is IWantToJoinTheGameCommand -> iWantToJoinTheGame.run(command)
is ICantPlayCommand -> iCantPlay.run(command)
}
}
@@ -1,14 +1,14 @@
package eventDemo.business.command
package eventDemo.domain.command
import eventDemo.business.command.command.GameCommand
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.business.event.GameEventBus
import eventDemo.business.event.GameEventStore
import eventDemo.business.event.event.GameEvent
import eventDemo.business.notification.CommandErrorNotification
import eventDemo.business.notification.CommandSuccessNotification
import eventDemo.business.notification.Notification
import eventDemo.domain.command.command.GameCommand
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.domain.event.GameEventBus
import eventDemo.domain.event.GameEventStore
import eventDemo.domain.event.event.GameEvent
import eventDemo.domain.notification.CommandErrorNotification
import eventDemo.domain.notification.CommandSuccessNotification
import eventDemo.domain.notification.Notification
import eventDemo.libs.command.CommandHandler
import eventDemo.libs.command.CommandRunnerController
import eventDemo.libs.event.EventHandlerImpl
@@ -1,4 +1,4 @@
package eventDemo.business.command.action
package eventDemo.domain.command.action
import eventDemo.libs.command.Command
import eventDemo.libs.event.Event
@@ -1,9 +1,9 @@
package eventDemo.business.command.action
package eventDemo.domain.command.action
import eventDemo.business.command.CommandException
import eventDemo.business.command.command.ICantPlayCommand
import eventDemo.business.event.event.PlayerHavePassEvent
import eventDemo.business.event.projection.GameStateRepository
import eventDemo.domain.command.CommandException
import eventDemo.domain.command.command.ICantPlayCommand
import eventDemo.domain.event.event.PlayerHavePassEvent
import eventDemo.domain.event.projection.GameStateRepository
/**
* A command to perform an action to play a new card
@@ -1,9 +1,9 @@
package eventDemo.business.command.action
package eventDemo.domain.command.action
import eventDemo.business.command.CommandException
import eventDemo.business.command.command.IWantToJoinTheGameCommand
import eventDemo.business.event.event.NewPlayerEvent
import eventDemo.business.event.projection.GameStateRepository
import eventDemo.domain.command.CommandException
import eventDemo.domain.command.command.IWantToJoinTheGameCommand
import eventDemo.domain.event.event.NewPlayerEvent
import eventDemo.domain.event.projection.GameStateRepository
/**
* A command to perform an action to play a new card
@@ -1,9 +1,9 @@
package eventDemo.business.command.action
package eventDemo.domain.command.action
import eventDemo.business.command.CommandException
import eventDemo.business.command.command.IWantToPlayCardCommand
import eventDemo.business.event.event.CardIsPlayedEvent
import eventDemo.business.event.projection.GameStateRepository
import eventDemo.domain.command.CommandException
import eventDemo.domain.command.command.IWantToPlayCardCommand
import eventDemo.domain.event.event.CardIsPlayedEvent
import eventDemo.domain.event.projection.GameStateRepository
/**
* A command to perform an action to play a new card
@@ -1,9 +1,9 @@
package eventDemo.business.command.action
package eventDemo.domain.command.action
import eventDemo.business.command.CommandException
import eventDemo.business.command.command.IamReadyToPlayCommand
import eventDemo.business.event.event.PlayerReadyEvent
import eventDemo.business.event.projection.GameStateRepository
import eventDemo.domain.command.CommandException
import eventDemo.domain.command.command.IamReadyToPlayCommand
import eventDemo.domain.event.event.PlayerReadyEvent
import eventDemo.domain.event.projection.GameStateRepository
/**
* A command to set as ready to play
@@ -1,7 +1,7 @@
package eventDemo.business.command.command
package eventDemo.domain.command.command
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.libs.command.Command
import kotlinx.serialization.Serializable
@@ -1,7 +1,7 @@
package eventDemo.business.command.command
package eventDemo.domain.command.command
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.libs.command.CommandId
import kotlinx.serialization.Serializable
@@ -1,7 +1,7 @@
package eventDemo.business.command.command
package eventDemo.domain.command.command
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.libs.command.CommandId
import kotlinx.serialization.Serializable
@@ -1,8 +1,8 @@
package eventDemo.business.command.command
package eventDemo.domain.command.command
import eventDemo.business.entity.Card
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Card
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.libs.command.CommandId
import kotlinx.serialization.Serializable
@@ -1,7 +1,7 @@
package eventDemo.business.command.command
package eventDemo.domain.command.command
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.libs.command.CommandId
import kotlinx.serialization.Serializable
@@ -1,4 +1,4 @@
package eventDemo.business.entity
package eventDemo.domain.entity
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.SerialName
@@ -1,4 +1,4 @@
package eventDemo.business.entity
package eventDemo.domain.entity
import kotlinx.serialization.Serializable
@@ -1,4 +1,4 @@
package eventDemo.business.entity
package eventDemo.domain.entity
import eventDemo.configuration.serializer.GameIdSerializer
import eventDemo.libs.event.AggregateId
@@ -1,4 +1,4 @@
package eventDemo.business.entity
package eventDemo.domain.entity
import eventDemo.configuration.serializer.PlayerIdSerializer
import eventDemo.configuration.serializer.UUIDSerializer
@@ -1,4 +1,4 @@
package eventDemo.business.entity
package eventDemo.domain.entity
import kotlinx.serialization.Serializable
@@ -0,0 +1,6 @@
package eventDemo.domain.event
import eventDemo.domain.event.event.GameEvent
import eventDemo.libs.bus.Bus
interface GameEventBus : Bus<GameEvent>
@@ -1,7 +1,7 @@
package eventDemo.business.event
package eventDemo.domain.event
import eventDemo.business.entity.GameId
import eventDemo.business.event.event.GameEvent
import eventDemo.domain.entity.GameId
import eventDemo.domain.event.event.GameEvent
import eventDemo.libs.event.EventHandler
import eventDemo.libs.event.EventHandlerImpl
import eventDemo.libs.event.VersionBuilder
@@ -0,0 +1,7 @@
package eventDemo.domain.event
import eventDemo.domain.entity.GameId
import eventDemo.domain.event.event.GameEvent
import eventDemo.libs.event.EventStore
interface GameEventStore : EventStore<GameEvent, GameId>
@@ -1,8 +1,8 @@
package eventDemo.business.event.event
package eventDemo.domain.event.event
import eventDemo.business.entity.Card
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Card
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
@@ -1,6 +1,6 @@
package eventDemo.business.event.event
package eventDemo.domain.event.event
import eventDemo.business.entity.GameId
import eventDemo.domain.entity.GameId
import eventDemo.libs.event.Event
import kotlinx.serialization.Serializable
import java.util.UUID
@@ -1,9 +1,9 @@
package eventDemo.business.event.event
package eventDemo.domain.event.event
import eventDemo.business.entity.Deck
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.business.entity.initHands
import eventDemo.domain.entity.Deck
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.domain.entity.initHands
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
@@ -1,7 +1,7 @@
package eventDemo.business.event.event
package eventDemo.domain.event.event
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
@@ -1,6 +1,6 @@
package eventDemo.business.event.event
package eventDemo.domain.event.event
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Player
import kotlinx.serialization.Serializable
@Serializable
@@ -1,8 +1,8 @@
package eventDemo.business.event.event
package eventDemo.domain.event.event
import eventDemo.business.entity.Card
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Card
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
@@ -1,8 +1,8 @@
package eventDemo.business.event.event
package eventDemo.domain.event.event
import eventDemo.business.entity.Card
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Card
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
@@ -1,7 +1,7 @@
package eventDemo.business.event.event
package eventDemo.domain.event.event
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
@@ -1,7 +1,7 @@
package eventDemo.business.event.event
package eventDemo.domain.event.event
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
@@ -1,6 +1,6 @@
package eventDemo.business.event.projection
package eventDemo.domain.event.projection
import eventDemo.business.entity.GameId
import eventDemo.domain.entity.GameId
import eventDemo.libs.event.projection.Projection
import kotlinx.serialization.Serializable
@@ -1,4 +1,4 @@
package eventDemo.business.event.projection
package eventDemo.domain.event.projection
import eventDemo.libs.bus.Bus
@@ -1,7 +1,7 @@
package eventDemo.business.event.projection
package eventDemo.domain.event.projection
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.libs.event.projection.Projection
import kotlinx.serialization.Serializable
@@ -1,13 +1,13 @@
package eventDemo.business.event.projection
package eventDemo.domain.event.projection
import eventDemo.business.event.event.CardIsPlayedEvent
import eventDemo.business.event.event.GameEvent
import eventDemo.business.event.event.GameStartedEvent
import eventDemo.business.event.event.NewPlayerEvent
import eventDemo.business.event.event.PlayerChoseColorEvent
import eventDemo.business.event.event.PlayerHavePassEvent
import eventDemo.business.event.event.PlayerReadyEvent
import eventDemo.business.event.event.PlayerWinEvent
import eventDemo.domain.event.event.CardIsPlayedEvent
import eventDemo.domain.event.event.GameEvent
import eventDemo.domain.event.event.GameStartedEvent
import eventDemo.domain.event.event.NewPlayerEvent
import eventDemo.domain.event.event.PlayerChoseColorEvent
import eventDemo.domain.event.event.PlayerHavePassEvent
import eventDemo.domain.event.event.PlayerReadyEvent
import eventDemo.domain.event.event.PlayerWinEvent
fun GameList.apply(event: GameEvent): GameList =
when (event) {
@@ -1,4 +1,4 @@
package eventDemo.business.event.projection
package eventDemo.domain.event.projection
interface GameListRepository {
fun getList(): List<GameList>
@@ -1,10 +1,10 @@
package eventDemo.business.event.projection
package eventDemo.domain.event.projection
import eventDemo.business.entity.Card
import eventDemo.business.entity.Deck
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.business.event.event.GameEvent
import eventDemo.domain.entity.Card
import eventDemo.domain.entity.Deck
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.domain.event.event.GameEvent
import eventDemo.libs.event.projection.Projection
import kotlinx.serialization.Serializable
@@ -1,15 +1,15 @@
package eventDemo.business.event.projection
package eventDemo.domain.event.projection
import eventDemo.business.entity.Card
import eventDemo.business.event.event.CardIsPlayedEvent
import eventDemo.business.event.event.GameEvent
import eventDemo.business.event.event.GameStartedEvent
import eventDemo.business.event.event.NewPlayerEvent
import eventDemo.business.event.event.PlayerActionEvent
import eventDemo.business.event.event.PlayerChoseColorEvent
import eventDemo.business.event.event.PlayerHavePassEvent
import eventDemo.business.event.event.PlayerReadyEvent
import eventDemo.business.event.event.PlayerWinEvent
import eventDemo.domain.entity.Card
import eventDemo.domain.event.event.CardIsPlayedEvent
import eventDemo.domain.event.event.GameEvent
import eventDemo.domain.event.event.GameStartedEvent
import eventDemo.domain.event.event.NewPlayerEvent
import eventDemo.domain.event.event.PlayerActionEvent
import eventDemo.domain.event.event.PlayerChoseColorEvent
import eventDemo.domain.event.event.PlayerHavePassEvent
import eventDemo.domain.event.event.PlayerReadyEvent
import eventDemo.domain.event.event.PlayerWinEvent
import io.github.oshai.kotlinlogging.KotlinLogging
fun GameState.apply(event: GameEvent): GameState =
@@ -0,0 +1,7 @@
package eventDemo.domain.event.projection
import eventDemo.domain.entity.GameId
interface GameStateRepository {
fun get(gameId: GameId): GameState
}
@@ -1,28 +1,28 @@
package eventDemo.business.event.projection.projectionListener
package eventDemo.domain.event.projection.projectionListener
import eventDemo.business.entity.Card
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.business.event.event.CardIsPlayedEvent
import eventDemo.business.event.event.GameStartedEvent
import eventDemo.business.event.event.NewPlayerEvent
import eventDemo.business.event.event.PlayerChoseColorEvent
import eventDemo.business.event.event.PlayerHavePassEvent
import eventDemo.business.event.event.PlayerReadyEvent
import eventDemo.business.event.event.PlayerWinEvent
import eventDemo.business.event.projection.GameProjectionBus
import eventDemo.business.event.projection.GameState
import eventDemo.business.notification.ItsTheTurnOfNotification
import eventDemo.business.notification.Notification
import eventDemo.business.notification.PlayerAsJoinTheGameNotification
import eventDemo.business.notification.PlayerAsPlayACardNotification
import eventDemo.business.notification.PlayerHavePassNotification
import eventDemo.business.notification.PlayerWasChoseTheCardColorNotification
import eventDemo.business.notification.PlayerWasReadyNotification
import eventDemo.business.notification.PlayerWinNotification
import eventDemo.business.notification.TheGameWasStartedNotification
import eventDemo.business.notification.WelcomeToTheGameNotification
import eventDemo.business.notification.YourNewCardNotification
import eventDemo.domain.entity.Card
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.domain.event.event.CardIsPlayedEvent
import eventDemo.domain.event.event.GameStartedEvent
import eventDemo.domain.event.event.NewPlayerEvent
import eventDemo.domain.event.event.PlayerChoseColorEvent
import eventDemo.domain.event.event.PlayerHavePassEvent
import eventDemo.domain.event.event.PlayerReadyEvent
import eventDemo.domain.event.event.PlayerWinEvent
import eventDemo.domain.event.projection.GameProjectionBus
import eventDemo.domain.event.projection.GameState
import eventDemo.domain.notification.ItsTheTurnOfNotification
import eventDemo.domain.notification.Notification
import eventDemo.domain.notification.PlayerAsJoinTheGameNotification
import eventDemo.domain.notification.PlayerAsPlayACardNotification
import eventDemo.domain.notification.PlayerHavePassNotification
import eventDemo.domain.notification.PlayerWasChoseTheCardColorNotification
import eventDemo.domain.notification.PlayerWasReadyNotification
import eventDemo.domain.notification.PlayerWinNotification
import eventDemo.domain.notification.TheGameWasStartedNotification
import eventDemo.domain.notification.WelcomeToTheGameNotification
import eventDemo.domain.notification.YourNewCardNotification
import io.github.oshai.kotlinlogging.KotlinLogging
import io.github.oshai.kotlinlogging.withLoggingContext
@@ -1,11 +1,11 @@
package eventDemo.business.event.projection.projectionListener
package eventDemo.domain.event.projection.projectionListener
import eventDemo.business.entity.GameId
import eventDemo.business.event.GameEventHandler
import eventDemo.business.event.event.GameStartedEvent
import eventDemo.business.event.event.PlayerWinEvent
import eventDemo.business.event.projection.GameProjectionBus
import eventDemo.business.event.projection.GameState
import eventDemo.domain.entity.GameId
import eventDemo.domain.event.GameEventHandler
import eventDemo.domain.event.event.GameStartedEvent
import eventDemo.domain.event.event.PlayerWinEvent
import eventDemo.domain.event.projection.GameProjectionBus
import eventDemo.domain.event.projection.GameState
import eventDemo.libs.event.projection.Projection
import io.github.oshai.kotlinlogging.KotlinLogging
import io.github.oshai.kotlinlogging.withLoggingContext
@@ -1,4 +1,4 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.configuration.serializer.UUIDSerializer
import eventDemo.libs.command.Command
@@ -1,3 +1,3 @@
package eventDemo.business.notification
package eventDemo.domain.notification
sealed interface CommandNotification : Notification
@@ -1,4 +1,4 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.configuration.serializer.UUIDSerializer
import eventDemo.libs.command.CommandId
@@ -1,6 +1,6 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.Serializable
import java.util.UUID
@@ -1,4 +1,4 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.Serializable
@@ -1,6 +1,6 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.Serializable
import java.util.UUID
@@ -1,7 +1,7 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.business.entity.Card
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Card
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.Serializable
import java.util.UUID
@@ -1,6 +1,6 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.Serializable
import java.util.UUID
@@ -1,7 +1,7 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.business.entity.Card
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Card
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.Serializable
import java.util.UUID
@@ -1,6 +1,6 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.Serializable
import java.util.UUID
@@ -1,6 +1,6 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.Serializable
import java.util.UUID
@@ -1,6 +1,6 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.business.entity.Card
import eventDemo.domain.entity.Card
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.Serializable
import java.util.UUID
@@ -1,6 +1,6 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.business.entity.Player
import eventDemo.domain.entity.Player
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.Serializable
import java.util.UUID
@@ -1,6 +1,6 @@
package eventDemo.business.notification
package eventDemo.domain.notification
import eventDemo.business.entity.Card
import eventDemo.domain.entity.Card
import eventDemo.configuration.serializer.UUIDSerializer
import kotlinx.serialization.Serializable
import java.util.UUID
@@ -1,8 +1,8 @@
package eventDemo.libs.command
import eventDemo.business.command.CommandException
import eventDemo.business.command.command.GameCommand
import eventDemo.business.event.event.GameEvent
import eventDemo.domain.command.CommandException
import eventDemo.domain.command.command.GameCommand
import eventDemo.domain.event.event.GameEvent
import eventDemo.libs.bus.Bus
import eventDemo.libs.event.AggregateId
import eventDemo.libs.event.Event