update ktlint rules

This commit is contained in:
2025-03-14 03:23:16 +01:00
parent 492981bed0
commit b4234a9b37
97 changed files with 2392 additions and 2359 deletions

View File

@@ -4,3 +4,5 @@ ktlint_standard = enabled
ktlint_experimental = enabled
ktlint_standard_string-template-indent = enabled
ktlint_standard_multiline-expression-wrapping = enabled
ktlint_function_signature_body_expression_wrapping = always
indent_size = 2

View File

@@ -1,6 +1,5 @@
@file:Suppress("PropertyName")
@Suppress("ktlint:standard:property-naming")
val ktor_version: String by project
val kotlin_version: String by project
val kotlin_serialization_version: String by project
@@ -28,7 +27,6 @@ application {
configure<org.jlleitschuh.gradle.ktlint.KtlintExtension> {
version.set("1.5.0")
enableExperimentalRules.set(true)
}
repositories {

View File

@@ -27,7 +27,8 @@ class GameCommandHandler(
player: Player,
incomingCommandChannel: ReceiveChannel<GameCommand>,
outgoingErrorChannelNotification: SendChannel<Notification>,
) = commandStreamChannel(incomingCommandChannel)
) =
commandStreamChannel(incomingCommandChannel)
.process { command ->
if (command.payload.player.id != player.id) {
logger.atWarn {

View File

@@ -11,7 +11,8 @@ data class Deck(
constructor(players: Set<Player>) :
this(playersHands = PlayersHands(players))
fun shuffle(): Deck = copy(stack = stack.shuffle())
fun shuffle(): Deck =
copy(stack = stack.shuffle())
fun placeFirstCardOnDiscard(): Deck {
val takenCard = stack.first()
@@ -58,7 +59,8 @@ data class Deck(
return Pair(copy(stack = newStack), takenCards)
}
private fun takeOne(): Pair<Deck, Card> = take(1).let { (deck, cards) -> Pair(deck, cards.first()) }
private fun takeOne(): Pair<Deck, Card> =
take(1).let { (deck, cards) -> Pair(deck, cards.first()) }
companion object {
fun newWithoutPlayers(): Deck =
@@ -96,27 +98,36 @@ fun Deck.initHands(
value class Stack(
private val cards: Set<Card> = emptySet(),
) : Set<Card> by cards {
operator fun plus(card: Card): Stack = cards.plus(card).toStack()
operator fun plus(card: Card): Stack =
cards.plus(card).toStack()
operator fun minus(card: Card): Stack = cards.minus(card).toStack()
operator fun minus(card: Card): Stack =
cards.minus(card).toStack()
fun shuffle(): Stack = shuffled().toStack()
fun shuffle(): Stack =
shuffled().toStack()
}
fun List<Card>.toStack(): Stack = Stack(this.toSet())
fun List<Card>.toStack(): Stack =
Stack(this.toSet())
fun Set<Card>.toStack(): Stack = Stack(this)
fun Set<Card>.toStack(): Stack =
Stack(this)
@JvmInline
@Serializable
value class Discard(
private val cards: Set<Card> = emptySet(),
) : Set<Card> by cards {
operator fun plus(card: Card): Discard = cards.plus(card).toDiscard()
operator fun plus(card: Card): Discard =
cards.plus(card).toDiscard()
operator fun minus(card: Card): Discard = cards.minus(card).toDiscard()
operator fun minus(card: Card): Discard =
cards.minus(card).toDiscard()
}
fun List<Card>.toDiscard(): Discard = Discard(this.toSet())
fun List<Card>.toDiscard(): Discard =
Discard(this.toSet())
fun Set<Card>.toDiscard(): Discard = Discard(this)
fun Set<Card>.toDiscard(): Discard =
Discard(this)

View File

@@ -13,5 +13,6 @@ import java.util.UUID
value class GameId(
override val id: UUID = UUID.randomUUID(),
) : AggregateId {
override fun toString(): String = id.toString()
override fun toString(): String =
id.toString()
}

View File

@@ -23,6 +23,7 @@ data class Player(
@Serializable(with = UUIDSerializer::class)
override val id: UUID = UUID.randomUUID(),
) : AggregateId {
override fun toString(): String = id.toString()
override fun toString(): String =
id.toString()
}
}

View File

@@ -10,7 +10,8 @@ value class PlayersHands(
constructor(players: Set<Player>) :
this(players.map { it.id }.associateWith { emptyList<Card>() }.toPlayersHands())
fun getHand(player: Player): List<Card>? = this[player.id]
fun getHand(player: Player): List<Card>? =
this[player.id]
fun removeCard(
player: Player,
@@ -28,7 +29,8 @@ value class PlayersHands(
fun addCard(
player: Player,
newCard: Card,
): PlayersHands = addCards(player, listOf(newCard))
): PlayersHands =
addCards(player, listOf(newCard))
fun addCards(
player: Player,
@@ -44,4 +46,5 @@ value class PlayersHands(
}.toPlayersHands()
}
fun Map<Player.PlayerId, List<Card>>.toPlayersHands(): PlayersHands = PlayersHands(this)
fun Map<Player.PlayerId, List<Card>>.toPlayersHands(): PlayersHands =
PlayersHands(this)

View File

@@ -62,7 +62,8 @@ data class GameState(
}
}
fun nextPlayer(direction: Direction): Player = players.elementAt(nextPlayerIndex(direction))
fun nextPlayer(direction: Direction): Player =
players.elementAt(nextPlayerIndex(direction))
private val sidePlayerIndexClockwise: Int by lazy {
if (players.isEmpty()) {

View File

@@ -29,7 +29,8 @@ class GameStateRepository(
*
* It fetches it from the local cache if possible, otherwise it builds it.
*/
fun getLast(gameId: GameId): GameState = projectionsSnapshot.getLast(gameId)
fun getLast(gameId: GameId): GameState =
projectionsSnapshot.getLast(gameId)
/**
* Get the [GameState] to the specific [event][GameEvent].
@@ -37,5 +38,6 @@ class GameStateRepository(
*
* It fetches it from the local cache if possible, otherwise it builds it.
*/
fun getUntil(event: GameEvent): GameState = projectionsSnapshot.getUntil(event)
fun getUntil(event: GameEvent): GameState =
projectionsSnapshot.getUntil(event)
}

View File

@@ -164,7 +164,8 @@ class ProjectionSnapshotRepositoryInMemory<E : Event<ID>, P : Projection<ID>, ID
private fun getEventAfterTheSnapshot(
aggregateId: ID,
snapshot: P?,
) = eventStore
) =
eventStore
.getStream(aggregateId)
.readGreaterOfVersion(snapshot?.lastEventVersion ?: 0)

View File

@@ -37,7 +37,8 @@ fun defaultJsonSerializer(): Json =
}
object CommandIdSerializer : KSerializer<CommandId> {
override fun deserialize(decoder: Decoder): CommandId = CommandId(decoder.decodeString())
override fun deserialize(decoder: Decoder): CommandId =
CommandId(decoder.decodeString())
override fun serialize(
encoder: Encoder,
@@ -50,7 +51,8 @@ object CommandIdSerializer : KSerializer<CommandId> {
}
object PlayerIdSerializer : KSerializer<Player.PlayerId> {
override fun deserialize(decoder: Decoder): Player.PlayerId = Player.PlayerId(UUID.fromString(decoder.decodeString()))
override fun deserialize(decoder: Decoder): Player.PlayerId =
Player.PlayerId(UUID.fromString(decoder.decodeString()))
override fun serialize(
encoder: Encoder,
@@ -63,7 +65,8 @@ object PlayerIdSerializer : KSerializer<Player.PlayerId> {
}
object GameIdSerializer : KSerializer<GameId> {
override fun deserialize(decoder: Decoder): GameId = GameId(UUID.fromString(decoder.decodeString()))
override fun deserialize(decoder: Decoder): GameId =
GameId(UUID.fromString(decoder.decodeString()))
override fun serialize(
encoder: Encoder,
@@ -76,7 +79,8 @@ object GameIdSerializer : KSerializer<GameId> {
}
object UUIDSerializer : KSerializer<UUID> {
override fun deserialize(decoder: Decoder): UUID = UUID.fromString(decoder.decodeString())
override fun deserialize(decoder: Decoder): UUID =
UUID.fromString(decoder.decodeString())
override fun serialize(
encoder: Encoder,

View File

@@ -14,7 +14,8 @@ value class CommandId(
) {
constructor(id: String) : this(UUID.fromString(id))
override fun toString(): String = id.toString()
override fun toString(): String =
id.toString()
}
/**

View File

@@ -11,7 +11,8 @@ import kotlin.time.Duration.Companion.minutes
class CommandStreamChannelBuilder<C : Command>(
private val maxCacheTime: Duration = 10.minutes,
) {
operator fun invoke(incoming: ReceiveChannel<C>): CommandStreamChannel<C> = CommandStreamChannel(incoming, maxCacheTime)
operator fun invoke(incoming: ReceiveChannel<C>): CommandStreamChannel<C> =
CommandStreamChannel(incoming, maxCacheTime)
}
/**

View File

@@ -6,7 +6,9 @@ import java.util.concurrent.ConcurrentMap
class EventStoreInMemory<E : Event<ID>, ID : AggregateId> : EventStore<E, ID> {
private val streams: ConcurrentMap<ID, EventStream<E>> = ConcurrentHashMap()
override fun getStream(aggregateId: ID): EventStream<E> = streams.computeIfAbsent(aggregateId) { EventStreamInMemory() }
override fun getStream(aggregateId: ID): EventStream<E> =
streams.computeIfAbsent(aggregateId) { EventStreamInMemory() }
override fun publish(event: E) = getStream(event.aggregateId).publish(event)
override fun publish(event: E) =
getStream(event.aggregateId).publish(event)
}

View File

@@ -27,7 +27,8 @@ class EventStreamInMemory<E : Event<*>> : EventStream<E> {
events.forEach { publish(it) }
}
override fun readAll(): Set<E> = events.toSet()
override fun readAll(): Set<E> =
events.toSet()
override fun readGreaterOfVersion(version: Int): Set<E> =
events

View File

@@ -13,7 +13,8 @@ class VersionBuilderLocal : VersionBuilder {
.addAndGet(1)
.also { logger.debug { "New version $it" } }
override fun getLastVersion(aggregateId: AggregateId): Int = versionOfAggregate(aggregateId).toInt()
override fun getLastVersion(aggregateId: AggregateId): Int =
versionOfAggregate(aggregateId).toInt()
private fun versionOfAggregate(aggregateId: AggregateId) =
versions

View File

@@ -3,8 +3,10 @@ package eventDemo
import eventDemo.app.entity.Card
import eventDemo.app.entity.Deck
fun Deck.allCardCount(): Int = stack.size + discard.size + playersHands.values.flatten().size
fun Deck.allCardCount(): Int =
stack.size + discard.size + playersHands.values.flatten().size
fun Deck.allCards(): Set<Card> = stack + discard + playersHands.values.flatten()
fun Deck.allCards(): Set<Card> =
stack + discard + playersHands.values.flatten()
// suspend fun SendChannel<Frame>.send(command: GameCommand) = send(Frame.Text(Json.encodeToString(command)))