feat: Implemented new Default-`StorageStrategy` `none'
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / persistence / storage / nostorage / NoStorageStorageConfiguration.java
1 package de.juplo.kafka.chat.backend.persistence.storage.nostorage;
2
3 import com.fasterxml.jackson.databind.ObjectMapper;
4 import de.juplo.kafka.chat.backend.ChatBackendProperties;
5 import de.juplo.kafka.chat.backend.domain.ChatRoom;
6 import de.juplo.kafka.chat.backend.domain.ShardingStrategy;
7 import de.juplo.kafka.chat.backend.persistence.StorageStrategy;
8 import de.juplo.kafka.chat.backend.persistence.inmemory.InMemoryChatRoomService;
9 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
10 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
11 import org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration;
12 import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
13 import org.springframework.context.annotation.Bean;
14 import org.springframework.context.annotation.Configuration;
15 import reactor.core.publisher.Flux;
16
17 import java.nio.file.Paths;
18 import java.time.Clock;
19
20
21 @ConditionalOnProperty(
22     prefix = "chat.backend.inmemory",
23     name = "storage-strategy",
24     havingValue = "none",
25     matchIfMissing = true)
26 @Configuration
27 @EnableAutoConfiguration(
28     exclude = {
29         MongoRepositoriesAutoConfiguration.class,
30         MongoAutoConfiguration.class })
31 public class NoStorageStorageConfiguration
32 {
33   @Bean
34   public StorageStrategy storageStrategy()
35   {
36     return new StorageStrategy()
37     {
38       @Override
39       public void write(Flux<ChatRoom> chatroomFlux) {}
40
41       @Override
42       public Flux<ChatRoom> read()
43       {
44         return Flux.empty();
45       }
46     };
47   }
48 }