refactor: Added success- and failure-callbacks to `StorageStrategy`
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / storage / files / FilesStorageStrategy.java
index 887aea2..1de0b44 100644 (file)
@@ -7,8 +7,8 @@ import de.juplo.kafka.chat.backend.api.ChatRoomInfoTo;
 import de.juplo.kafka.chat.backend.api.MessageTo;
 import de.juplo.kafka.chat.backend.domain.ChatRoomInfo;
 import de.juplo.kafka.chat.backend.domain.Message;
-import de.juplo.kafka.chat.backend.persistence.StorageStrategy;
-import de.juplo.kafka.chat.backend.persistence.ShardingStrategy;
+import de.juplo.kafka.chat.backend.implementation.StorageStrategy;
+import de.juplo.kafka.chat.backend.implementation.ShardingStrategy;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import reactor.core.publisher.Flux;
@@ -121,7 +121,9 @@ public class FilesStorageStrategy implements StorageStrategy
   @Override
   public void writeChatRoomData(
       UUID chatRoomId,
-      Flux<Message> messageFlux)
+      Flux<Message> messageFlux,
+      SuccessCallback successCallback,
+      FailureCallback failureCallback)
   {
     Path path = chatroomPath(chatRoomId);
     log.info("Writing messages for {} to {}", chatRoomId, path);
@@ -172,10 +174,12 @@ public class FilesStorageStrategy implements StorageStrategy
               throw new RuntimeException(e);
             }
           });
+
+      successCallback.accept(chatRoomId);
     }
     catch (IOException e)
     {
-      throw new RuntimeException(e);
+      failureCallback.accept(chatRoomId, e);
     }
   }