X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fpersistence%2Fstorage%2Fmongodb%2FMessageTo.java;h=f6c6b85d4d29508c569658446ced13918f747638;hb=e8d8cb2aba9988608ee98b0a7dfc1053b6429040;hp=4f93695c2f729e343f974b1a452e3e843849a40f;hpb=009435373fa6adf7ec9e375ef71a545c8c8f010d;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chat/backend/persistence/storage/mongodb/MessageTo.java b/src/main/java/de/juplo/kafka/chat/backend/persistence/storage/mongodb/MessageTo.java index 4f93695c..f6c6b85d 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/persistence/storage/mongodb/MessageTo.java +++ b/src/main/java/de/juplo/kafka/chat/backend/persistence/storage/mongodb/MessageTo.java @@ -2,45 +2,51 @@ package de.juplo.kafka.chat.backend.persistence.storage.mongodb; import de.juplo.kafka.chat.backend.domain.Message; import lombok.*; +import org.springframework.data.mongodb.core.index.Indexed; +import org.springframework.data.mongodb.core.mapping.Document; +import org.springframework.data.mongodb.core.mapping.Field; import java.time.LocalDateTime; -import java.util.regex.Matcher; -import java.util.regex.Pattern; +import java.util.UUID; @AllArgsConstructor @NoArgsConstructor @Getter(AccessLevel.PACKAGE) @Setter(AccessLevel.PACKAGE) -@EqualsAndHashCode(of = { "user", "id" }) -@ToString(of = { "user", "id" }) +@EqualsAndHashCode(of = { "chatRoomId", "user", "id" }) +@ToString(of = { "chatRoomId", "user", "id" }) +@Document class MessageTo { - final static Pattern SPLIT_ID = Pattern.compile("^([a-z-0-9]+)--([0-9]+)$"); - private String id; + @Indexed + private String chatRoomId; + @Indexed + private String user; + @Field("id") + @Indexed + private Long id; + @Indexed private Long serial; private String time; private String text; Message toMessage() { - Matcher matcher = SPLIT_ID.matcher(id); - if (!matcher.matches()) - throw new RuntimeException("MessageTo with invalid ID: " + id); - Long messageId = Long.parseLong(matcher.group(2)); - String user = matcher.group(1); return new Message( - Message.MessageKey.of(user, messageId), + Message.MessageKey.of(user, id), serial, LocalDateTime.parse(time), text); } - static MessageTo from(Message message) + static MessageTo from(UUID chatRoomId, Message message) { return new MessageTo( - message.getUsername() + "--" + message.getId(), + chatRoomId.toString(), + message.getUsername(), + message.getId(), message.getSerialNumber(), message.getTimestamp().toString(), message.getMessageText());