X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fpersistence%2FStorageStrategy.java;h=7d0f66d4b47c033848803dea348b57422cc78ba0;hb=df207aa9a8cd349fd43785270d250a7f55593801;hp=3c268ca6fb36642ebdf066acf37e25b9ab028770;hpb=9e3e6397414722ad6f9a43381b4501edf4f56134;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chat/backend/persistence/StorageStrategy.java b/src/main/java/de/juplo/kafka/chat/backend/persistence/StorageStrategy.java index 3c268ca6..7d0f66d4 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/persistence/StorageStrategy.java +++ b/src/main/java/de/juplo/kafka/chat/backend/persistence/StorageStrategy.java @@ -1,14 +1,30 @@ package de.juplo.kafka.chat.backend.persistence; -import de.juplo.kafka.chat.backend.domain.Chatroom; +import de.juplo.kafka.chat.backend.domain.ChatHome; +import de.juplo.kafka.chat.backend.domain.ChatRoomInfo; import de.juplo.kafka.chat.backend.domain.Message; import reactor.core.publisher.Flux; +import java.util.UUID; + public interface StorageStrategy { - void writeChatrooms(Flux chatroomFlux); - Flux readChatrooms(); - void writeMessages(ChatroomInfo chatroomInfo, Flux messageFlux); - Flux readMessages(ChatroomInfo chatroomInfo); + default void write(ChatHome chatHome) + { + writeChatRoomInfo( + chatHome + .getChatRoomInfo() + .doOnNext(chatRoomInfo -> + writeChatRoomData( + chatRoomInfo.getId(), + chatHome + .getChatRoomData(chatRoomInfo.getId()) + .flatMapMany(chatRoomData -> chatRoomData.getMessages())))); + } + + void writeChatRoomInfo(Flux chatRoomInfoFlux); + Flux readChatRoomInfo(); + void writeChatRoomData(UUID chatRoomId, Flux messageFlux); + Flux readChatRoomData(UUID chatRoomId); }