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