refactor: Removed Interface `ChatHomeService`
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / persistence / inmemory / SimpleChatHome.java
1 package de.juplo.kafka.chat.backend.persistence.inmemory;
2
3 import de.juplo.kafka.chat.backend.domain.ChatHome;
4 import de.juplo.kafka.chat.backend.domain.ChatRoom;
5 import de.juplo.kafka.chat.backend.domain.UnknownChatroomException;
6 import lombok.extern.slf4j.Slf4j;
7 import reactor.core.publisher.Flux;
8 import reactor.core.publisher.Mono;
9
10 import java.util.*;
11
12
13 @Slf4j
14 public class SimpleChatHome implements ChatHome
15 {
16   private final InMemoryChatHomeService service;
17   private final int shard;
18
19
20   public SimpleChatHome(InMemoryChatHomeService service, int shard)
21   {
22     log.info("Created SimpleChatHome for shard {}", shard);
23     this.service = service;
24     this.shard = shard;
25   }
26
27   public SimpleChatHome(InMemoryChatHomeService service)
28   {
29     this(service, 0);
30   }
31
32
33   @Override
34   public Mono<ChatRoom> getChatRoom(UUID id)
35   {
36     return service
37         .getChatRoom(shard, id)
38         .switchIfEmpty(Mono.error(() -> new UnknownChatroomException(id)));
39   }
40
41   @Override
42   public Flux<ChatRoom> getChatRooms()
43   {
44     return service.getChatRooms(shard);
45   }
46 }