projects
/
demos
/
kafka
/
chat
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
refactor: Simplified `StorageStrategy`
[demos/kafka/chat]
/
src
/
main
/
java
/
de
/
juplo
/
kafka
/
chat
/
backend
/
implementation
/
StorageStrategy.java
diff --git
a/src/main/java/de/juplo/kafka/chat/backend/implementation/StorageStrategy.java
b/src/main/java/de/juplo/kafka/chat/backend/implementation/StorageStrategy.java
index
cbf55a4
..
6108163
100644
(file)
--- a/
src/main/java/de/juplo/kafka/chat/backend/implementation/StorageStrategy.java
+++ b/
src/main/java/de/juplo/kafka/chat/backend/implementation/StorageStrategy.java
@@
-1,8
+1,10
@@
-package de.juplo.kafka.chat.backend.
persistence
;
+package de.juplo.kafka.chat.backend.
implementation
;
import de.juplo.kafka.chat.backend.domain.ChatHomeService;
import de.juplo.kafka.chat.backend.domain.ChatRoomInfo;
import de.juplo.kafka.chat.backend.domain.Message;
import de.juplo.kafka.chat.backend.domain.ChatHomeService;
import de.juplo.kafka.chat.backend.domain.ChatRoomInfo;
import de.juplo.kafka.chat.backend.domain.Message;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import reactor.core.publisher.Flux;
import java.util.UUID;
import reactor.core.publisher.Flux;
import java.util.UUID;
@@
-10,21
+12,28
@@
import java.util.UUID;
public interface StorageStrategy
{
public interface StorageStrategy
{
- default void write(ChatHomeService chatHomeService)
+ Logger log = LoggerFactory.getLogger(StorageStrategy.class.getCanonicalName());
+
+ default Flux<ChatRoomInfo> write(ChatHomeService chatHomeService)
{
{
- writeChatRoomInfo(
+
return
writeChatRoomInfo(
chatHomeService
.getChatRoomInfo()
chatHomeService
.getChatRoomInfo()
+ .doOnComplete(() -> log.info("Stored {}", chatHomeService))
+ .doOnError(throwable -> log.error("Could not store {}: {}", chatHomeService, throwable))
.doOnNext(chatRoomInfo ->
writeChatRoomData(
chatRoomInfo.getId(),
chatHomeService
.getChatRoomData(chatRoomInfo.getId())
.doOnNext(chatRoomInfo ->
writeChatRoomData(
chatRoomInfo.getId(),
chatHomeService
.getChatRoomData(chatRoomInfo.getId())
- .flatMapMany(chatRoomData -> chatRoomData.getMessages()))));
+ .flatMapMany(chatRoomData -> chatRoomData.getMessages())
+ .doOnComplete(() -> log.info("Stored {}", chatRoomInfo))
+ .doOnError(throwable -> log.error("Could not store {}: {}", chatRoomInfo, throwable)))
+ .subscribe()));
}
}
-
void
writeChatRoomInfo(Flux<ChatRoomInfo> chatRoomInfoFlux);
+
Flux<ChatRoomInfo>
writeChatRoomInfo(Flux<ChatRoomInfo> chatRoomInfoFlux);
Flux<ChatRoomInfo> readChatRoomInfo();
Flux<ChatRoomInfo> readChatRoomInfo();
-
void
writeChatRoomData(UUID chatRoomId, Flux<Message> messageFlux);
+
Flux<Message>
writeChatRoomData(UUID chatRoomId, Flux<Message> messageFlux);
Flux<Message> readChatRoomData(UUID chatRoomId);
}
Flux<Message> readChatRoomData(UUID chatRoomId);
}