WIP - Ein Versuch (vielleicht Unsinn)
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / storage / mongodb / MessageTo.java
1 package de.juplo.kafka.chat.backend.storage.mongodb;
2
3 import de.juplo.kafka.chat.backend.domain.Message;
4 import lombok.*;
5 import org.springframework.data.mongodb.core.index.Indexed;
6 import org.springframework.data.mongodb.core.mapping.Document;
7 import org.springframework.data.mongodb.core.mapping.Field;
8
9 import java.time.LocalDateTime;
10 import java.util.UUID;
11
12
13 @AllArgsConstructor
14 @NoArgsConstructor
15 @Getter(AccessLevel.PACKAGE)
16 @Setter(AccessLevel.PACKAGE)
17 @EqualsAndHashCode(of = { "chatRoomId", "user", "id" })
18 @ToString(of = { "chatRoomId", "user", "id" })
19 @Document
20 class MessageTo
21 {
22   @Indexed
23   private String chatRoomId;
24   @Indexed
25   private String user;
26   @Field("id")
27   @Indexed
28   private Long id;
29   @Indexed
30   private Long serial;
31   private String time;
32   private String text;
33
34   Message toMessage()
35   {
36     return new Message(
37         Message.MessageKey.of(user, id),
38         serial,
39         LocalDateTime.parse(time),
40         text);
41   }
42
43   static MessageTo from(UUID chatRoomId, Message message)
44   {
45     return
46         new MessageTo(
47             chatRoomId.toString(),
48             message.getUsername(),
49             message.getId(),
50             message.getSerialNumber(),
51             message.getTimestamp().toString(),
52             message.getMessageText());
53   }
54 }