2 Commits
Author SHA1 Message Date
flecomte 78956ce84e chore: upgrade versions and rename folders 2026-07-20 19:54:58 +02:00
flecomte 7fb488ab56 feat: increase timeout tests 2026-03-14 01:36:54 +01:00
113 changed files with 474 additions and 473 deletions
+3 -3
View File
@@ -12,9 +12,9 @@ val kotest_version: String by project
plugins {
application
kotlin("jvm") version "2.1.10"
id("io.ktor.plugin") version "3.1.1"
id("org.jetbrains.kotlin.plugin.serialization") version "2.1.10"
kotlin("jvm") version "2.1.21"
id("io.ktor.plugin") version "3.5.1"
id("org.jetbrains.kotlin.plugin.serialization") version "2.4.10"
id("org.jlleitschuh.gradle.ktlint") version "12.2.0"
id("com.avast.gradle.docker-compose") version "0.17.12"
}
+3 -3
View File
@@ -1,6 +1,6 @@
services:
redis:
image: redis/redis-stack:7.4.0-v3
image: redis/redis-stack:7.4.0-v8
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
volumes:
@@ -19,7 +19,7 @@ services:
restart: no
postgresql:
image: postgres:17.4
image: postgres:18.4
command: postgres -c 'max_connections=500'
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/postgresql_password
@@ -32,7 +32,7 @@ services:
timeout: 5s
retries: 10
volumes:
- postgresql_data:/var/lib/postgresql/data
- postgresql_data:/var/lib/postgresql
rabbitmq:
image: rabbitmq:4-management-alpine
+7 -7
View File
@@ -1,9 +1,9 @@
ktor_version=3.1.1
kotlin_version=2.1.10
kotlin_serialization_version=1.8.0
logback_version=1.5.17
koin_version=4.0.2
kotlin_logging_version=7.0.5
kotest_version=6.0.0.M2
ktor_version=3.5.1
kotlin_version=2.1.21
kotlin_serialization_version=1.11.0
logback_version=1.5.38
koin_version=4.2.1
kotlin_logging_version=8.0.4
kotest_version=6.2.2
kotlin.code.style=official
+1 -1
View File
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
@@ -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
+3 -3
View File
@@ -1,9 +1,9 @@
package eventDemo
import com.zaxxer.hikari.HikariDataSource
import eventDemo.business.entity.Card
import eventDemo.business.entity.Deck
import eventDemo.configuration.business.configureGameListener
import eventDemo.domain.entity.Card
import eventDemo.domain.entity.Deck
import eventDemo.configuration.domain.configureGameListener
import eventDemo.configuration.injection.appKoinModule
import eventDemo.configuration.ktor.configuration
import io.github.oshai.kotlinlogging.KotlinLogging
@@ -1,12 +1,10 @@
package eventDemo.adapter.infrastructureLayer
package eventDemo.adapter.infrastructure.event
import com.rabbitmq.client.ConnectionFactory
import eventDemo.adapter.infrastructureLayer.event.GameEventBusInMemory
import eventDemo.adapter.infrastructureLayer.event.GameEventBusInRabbinMQ
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.business.event.GameEventBus
import eventDemo.business.event.event.NewPlayerEvent
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.domain.event.GameEventBus
import eventDemo.domain.event.event.NewPlayerEvent
import eventDemo.testKoinApplicationWithConfig
import io.kotest.assertions.nondeterministic.eventually
import io.kotest.core.spec.style.FunSpec
@@ -15,6 +13,7 @@ import io.kotest.matchers.equals.shouldBeEqual
import io.mockk.mockk
import io.mockk.spyk
import io.mockk.verify
import java.util.function.Function
import kotlin.time.Duration.Companion.seconds
class GameEventBusInRabbitMQTest :
@@ -28,7 +27,7 @@ class GameEventBusInRabbitMQTest :
)
withData(busListToTest) { bus ->
val spy = spyk(mockk<() -> Unit>())
val spy = spyk<() -> Unit>()
val aggregateId = GameId()
val player1 = Player(name = "Tesla")
val player2 = Player(name = "Einstein")
@@ -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 eventDemo.configuration.ktor.makeJwt
import io.ktor.client.request.HttpRequestBuilder
import io.ktor.client.request.header
@@ -1,12 +1,12 @@
package eventDemo.adapter.interfaceLayer.query
package eventDemo.adapter.presenter.query
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.business.event.GameEventHandler
import eventDemo.business.event.event.GameStartedEvent
import eventDemo.business.event.event.NewPlayerEvent
import eventDemo.business.event.event.PlayerReadyEvent
import eventDemo.business.event.projection.GameList
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.domain.event.GameEventHandler
import eventDemo.domain.event.event.GameStartedEvent
import eventDemo.domain.event.event.NewPlayerEvent
import eventDemo.domain.event.event.PlayerReadyEvent
import eventDemo.domain.event.projection.GameList
import eventDemo.testApplicationWithConfig
import io.github.oshai.kotlinlogging.KotlinLogging
import io.kotest.assertions.nondeterministic.eventually
@@ -57,7 +57,7 @@ class GameListRouteTest :
},
) {
// Wait until the projection is created
eventually(3.seconds) {
eventually(10.seconds) {
httpClient()
.get("/games") {
withAuth(player1)
@@ -1,26 +1,26 @@
package eventDemo.adapter.interfaceLayer.query
package eventDemo.adapter.presenter.query
import eventDemo.Tag
import eventDemo.business.command.GameCommandHandler
import eventDemo.business.command.command.GameCommand
import eventDemo.business.command.command.IWantToJoinTheGameCommand
import eventDemo.business.command.command.IWantToPlayCardCommand
import eventDemo.business.command.command.IamReadyToPlayCommand
import eventDemo.business.entity.Card
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.business.event.event.disableShuffleDeck
import eventDemo.business.event.projection.GameState
import eventDemo.business.event.projection.GameStateRepository
import eventDemo.business.event.projection.projectionListener.PlayerNotificationListener
import eventDemo.business.notification.CommandSuccessNotification
import eventDemo.business.notification.ItsTheTurnOfNotification
import eventDemo.business.notification.Notification
import eventDemo.business.notification.PlayerAsJoinTheGameNotification
import eventDemo.business.notification.PlayerAsPlayACardNotification
import eventDemo.business.notification.PlayerWasReadyNotification
import eventDemo.business.notification.TheGameWasStartedNotification
import eventDemo.business.notification.WelcomeToTheGameNotification
import eventDemo.domain.command.GameCommandHandler
import eventDemo.domain.command.command.GameCommand
import eventDemo.domain.command.command.IWantToJoinTheGameCommand
import eventDemo.domain.command.command.IWantToPlayCardCommand
import eventDemo.domain.command.command.IamReadyToPlayCommand
import eventDemo.domain.entity.Card
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.domain.event.event.disableShuffleDeck
import eventDemo.domain.event.projection.GameState
import eventDemo.domain.event.projection.GameStateRepository
import eventDemo.domain.event.projection.projectionListener.PlayerNotificationListener
import eventDemo.domain.notification.CommandSuccessNotification
import eventDemo.domain.notification.ItsTheTurnOfNotification
import eventDemo.domain.notification.Notification
import eventDemo.domain.notification.PlayerAsJoinTheGameNotification
import eventDemo.domain.notification.PlayerAsPlayACardNotification
import eventDemo.domain.notification.PlayerWasReadyNotification
import eventDemo.domain.notification.TheGameWasStartedNotification
import eventDemo.domain.notification.WelcomeToTheGameNotification
import eventDemo.testKoinApplicationWithConfig
import io.kotest.assertions.nondeterministic.eventually
import io.kotest.assertions.nondeterministic.until
@@ -1,15 +1,15 @@
package eventDemo.adapter.interfaceLayer.query
package eventDemo.adapter.presenter.query
import eventDemo.business.entity.Card
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.business.event.GameEventHandler
import eventDemo.business.event.event.CardIsPlayedEvent
import eventDemo.business.event.event.NewPlayerEvent
import eventDemo.business.event.event.PlayerReadyEvent
import eventDemo.business.event.event.disableShuffleDeck
import eventDemo.business.event.projection.GameState
import eventDemo.business.event.projection.GameStateRepository
import eventDemo.domain.entity.Card
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.domain.event.GameEventHandler
import eventDemo.domain.event.event.CardIsPlayedEvent
import eventDemo.domain.event.event.NewPlayerEvent
import eventDemo.domain.event.event.PlayerReadyEvent
import eventDemo.domain.event.event.disableShuffleDeck
import eventDemo.domain.event.projection.GameState
import eventDemo.domain.event.projection.GameStateRepository
import eventDemo.testApplicationWithConfig
import io.kotest.assertions.nondeterministic.eventually
import io.kotest.assertions.nondeterministic.until
@@ -1,4 +1,4 @@
package eventDemo.adapter.interfaceLayer.query
package eventDemo.adapter.presenter.query
import eventDemo.configuration.ktor.defaultJsonSerializer
import io.ktor.client.HttpClient
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
@@ -1,14 +1,14 @@
package eventDemo.business.command
package eventDemo.domain.command
import eventDemo.Tag
import eventDemo.business.command.command.GameCommand
import eventDemo.business.command.command.IWantToJoinTheGameCommand
import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.business.event.projection.projectionListener.PlayerNotificationListener
import eventDemo.business.notification.CommandSuccessNotification
import eventDemo.business.notification.Notification
import eventDemo.business.notification.WelcomeToTheGameNotification
import eventDemo.domain.command.command.GameCommand
import eventDemo.domain.command.command.IWantToJoinTheGameCommand
import eventDemo.domain.entity.GameId
import eventDemo.domain.entity.Player
import eventDemo.domain.event.projection.projectionListener.PlayerNotificationListener
import eventDemo.domain.notification.CommandSuccessNotification
import eventDemo.domain.notification.Notification
import eventDemo.domain.notification.WelcomeToTheGameNotification
import eventDemo.testKoinApplicationWithConfig
import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.collections.shouldContain
@@ -1,4 +1,4 @@
package eventDemo.business.command
package eventDemo.domain.command
import io.kotest.core.spec.style.FunSpec
@@ -1,4 +1,4 @@
package eventDemo.business.command.command
package eventDemo.domain.command.command
import io.kotest.core.spec.style.FunSpec
@@ -1,4 +1,4 @@
package eventDemo.business.command.command
package eventDemo.domain.command.command
import io.kotest.core.spec.style.FunSpec

Some files were not shown because too many files have changed in this diff Show More