From: Kai Moritz Date: Sat, 11 Oct 2025 17:25:59 +0000 (+0200) Subject: feat: Introduces `ChatHomeService.remove(UUID)` (untested!) X-Git-Url: http://juplo.de/gitweb/?a=commitdiff_plain;h=543cc52062a3a58059157d0e9e291ec4f113e7ef;p=demos%2Fkafka%2Fchat 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` --- 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() {