feat: Prepared the application for sharding
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / persistence / storage / mongodb / ChatRoomTo.java
1 package de.juplo.kafka.chat.backend.persistence.storage.mongodb;
2
3 import de.juplo.kafka.chat.backend.domain.ChatRoom;
4 import lombok.*;
5 import org.springframework.data.annotation.Id;
6 import org.springframework.data.mongodb.core.mapping.Document;
7
8 import java.util.List;
9
10
11 @AllArgsConstructor
12 @NoArgsConstructor
13 @Getter(AccessLevel.PACKAGE)
14 @Setter(AccessLevel.PACKAGE)
15 @EqualsAndHashCode(of = { "id" })
16 @ToString(of = { "id", "name" })
17 @Document
18 public class ChatRoomTo
19 {
20   @Id
21   private String id;
22   private String name;
23   private int shard;
24   private List<MessageTo> messages;
25
26   public static ChatRoomTo from(ChatRoom chatroom)
27   {
28     return new ChatRoomTo(
29         chatroom.getId().toString(),
30         chatroom.getName(),
31         chatroom.getShard(),
32         chatroom
33             .getMessages()
34             .map(MessageTo::from)
35             .collectList()
36             .block());
37   }
38 }