From 543cc52062a3a58059157d0e9e291ec4f113e7ef Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Sat, 11 Oct 2025 19:25:59 +0200 Subject: [PATCH] feat: Introduces `ChatHomeService.remove(UUID)` (untested!) * The introduced method is needed to setup/reset the state in the pact-test * Therefore, it is only implemented for the implementation `in-memory` --- .../chat/backend/domain/ChatHomeService.java | 2 ++ .../inmemory/ShardedChatHomeService.java | 15 ++++++++++++--- .../inmemory/SimpleChatHomeService.java | 15 +++++++++++++-- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/juplo/kafka/chat/backend/domain/ChatHomeService.java b/src/main/java/de/juplo/kafka/chat/backend/domain/ChatHomeService.java index 19fa26c4..36f92282 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/domain/ChatHomeService.java +++ b/src/main/java/de/juplo/kafka/chat/backend/domain/ChatHomeService.java @@ -12,6 +12,8 @@ public interface ChatHomeService Mono getChatRoomInfo(UUID id); + default void removeChatRoom(UUID id) {} + Flux getChatRoomInfo(); Mono getChatRoomData(UUID id); diff --git a/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/ShardedChatHomeService.java b/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/ShardedChatHomeService.java index 9a384533..f4339c51 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/ShardedChatHomeService.java +++ b/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/ShardedChatHomeService.java @@ -1,6 +1,8 @@ package de.juplo.kafka.chat.backend.implementation.inmemory; -import de.juplo.kafka.chat.backend.domain.*; +import de.juplo.kafka.chat.backend.domain.ChatHomeService; +import de.juplo.kafka.chat.backend.domain.ChatRoomData; +import de.juplo.kafka.chat.backend.domain.ChatRoomInfo; import de.juplo.kafka.chat.backend.domain.exceptions.ShardNotOwnedException; import de.juplo.kafka.chat.backend.domain.exceptions.UnknownChatroomException; import de.juplo.kafka.chat.backend.implementation.ShardingStrategy; @@ -65,11 +67,18 @@ public class ShardedChatHomeService implements ChatHomeService : chatHomes[shard] .getChatRoomInfo(id) .onErrorMap(throwable -> throwable instanceof UnknownChatroomException - ? new UnknownChatroomException( + ? new UnknownChatroomException( id, shard, ownedShards.stream().mapToInt(i -> i.intValue()).toArray()) - : throwable); + : throwable); + } + + @Override + public void removeChatRoom(UUID id) + { + int shard = selectShard(id); + chatHomes[shard].removeChatRoom(id); } @Override diff --git a/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/SimpleChatHomeService.java b/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/SimpleChatHomeService.java index dc68bf89..a966349e 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/SimpleChatHomeService.java +++ b/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/SimpleChatHomeService.java @@ -1,6 +1,9 @@ package de.juplo.kafka.chat.backend.implementation.inmemory; -import de.juplo.kafka.chat.backend.domain.*; +import de.juplo.kafka.chat.backend.domain.ChatHomeService; +import de.juplo.kafka.chat.backend.domain.ChatMessageService; +import de.juplo.kafka.chat.backend.domain.ChatRoomData; +import de.juplo.kafka.chat.backend.domain.ChatRoomInfo; import de.juplo.kafka.chat.backend.domain.exceptions.UnknownChatroomException; import de.juplo.kafka.chat.backend.implementation.StorageStrategy; import lombok.extern.slf4j.Slf4j; @@ -8,7 +11,9 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import java.time.Clock; -import java.util.*; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; @Slf4j @@ -114,6 +119,12 @@ public class SimpleChatHomeService implements ChatHomeService .switchIfEmpty(Mono.error(() -> new UnknownChatroomException(id))); } + @Override + public void removeChatRoom(UUID id) + { + chatRoomInfo.remove(id); + } + @Override public Flux getChatRoomInfo() { -- 2.39.5