refactor: Extracted annonymous class into `NoStorageStorageStrategy`
authorKai Moritz <kai@juplo.de>
Mon, 19 Feb 2024 12:05:51 +0000 (13:05 +0100)
committerKai Moritz <kai@juplo.de>
Tue, 20 Feb 2024 09:28:35 +0000 (10:28 +0100)
--
COPY

src/main/java/de/juplo/kafka/chat/backend/storage/nostorage/NoStorageStorageStrategy.java [new file with mode: 0644]

diff --git a/src/main/java/de/juplo/kafka/chat/backend/storage/nostorage/NoStorageStorageStrategy.java b/src/main/java/de/juplo/kafka/chat/backend/storage/nostorage/NoStorageStorageStrategy.java
new file mode 100644 (file)
index 0000000..1b20aa3
--- /dev/null
@@ -0,0 +1,53 @@
+package de.juplo.kafka.chat.backend.storage.nostorage;
+
+import de.juplo.kafka.chat.backend.domain.ChatRoomInfo;
+import de.juplo.kafka.chat.backend.domain.Message;
+import de.juplo.kafka.chat.backend.implementation.StorageStrategy;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration;
+import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import reactor.core.publisher.Flux;
+
+import java.util.UUID;
+
+
+@ConditionalOnProperty(
+    prefix = "chat.backend.inmemory",
+    name = "storage-strategy",
+    havingValue = "none",
+    matchIfMissing = true)
+@Configuration
+@EnableAutoConfiguration(
+    exclude = {
+        MongoRepositoriesAutoConfiguration.class,
+        MongoAutoConfiguration.class })
+public class NoStorageStorageConfiguration
+{
+  @Bean
+  public StorageStrategy storageStrategy()
+  {
+    return new StorageStrategy()
+    {
+      @Override
+      public void writeChatRoomInfo(Flux<ChatRoomInfo> chatRoomInfoFlux) {}
+
+      @Override
+      public Flux<ChatRoomInfo> readChatRoomInfo()
+      {
+        return Flux.empty();
+      }
+
+      @Override
+      public void writeChatRoomData(UUID chatRoomId, Flux<Message> messageFlux) {}
+
+      @Override
+      public Flux<Message> readChatRoomData(UUID chatRoomId)
+      {
+        return Flux.empty();
+      }
+    };
+  }
+}