From 04ca05cd146acbe5a46ae9823b87349400f21b96 Mon Sep 17 00:00:00 2001 From: akastijn Date: Sun, 19 Jul 2026 00:12:12 +0200 Subject: [PATCH] Refactor `ChatLogDao` to use `Timestamp` and update `ChatMessageMapper` with proper JSON serialization using Jackson. --- .../controllers/chat/ChatMessageMapper.java | 13 +++++++++++-- .../alttd/altitudeweb/database/chat/ChatLogDao.java | 4 +++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/alttd/altitudeweb/controllers/chat/ChatMessageMapper.java b/backend/src/main/java/com/alttd/altitudeweb/controllers/chat/ChatMessageMapper.java index 8966096..9469794 100644 --- a/backend/src/main/java/com/alttd/altitudeweb/controllers/chat/ChatMessageMapper.java +++ b/backend/src/main/java/com/alttd/altitudeweb/controllers/chat/ChatMessageMapper.java @@ -2,6 +2,9 @@ package com.alttd.altitudeweb.controllers.chat; import com.alttd.altitudeweb.database.chat.ChatLogDao; import com.alttd.altitudeweb.model.ChatMessageDto; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import lombok.experimental.UtilityClass; import java.time.Instant; @@ -9,6 +12,8 @@ import java.util.UUID; @UtilityClass public class ChatMessageMapper { + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper() + .registerModule(new JavaTimeModule()); public ChatMessage fromDto(ChatMessageDto dto) { return ChatMessage.builder() @@ -23,7 +28,7 @@ public class ChatMessageMapper { public ChatMessage fromDao(ChatLogDao dao) { return ChatMessage.builder() .uuid(UUID.fromString(dao.getUuid())) - .timestamp(Instant.ofEpochMilli(dao.getTimeStamp())) + .timestamp(dao.getTimeStamp().toInstant()) .server(dao.getServer()) .messageJson(dao.getMiniMessage()) .notBlocked(!dao.isBlocked()) @@ -31,6 +36,10 @@ public class ChatMessageMapper { } public static String toJson(ChatMessage chatMessage) { - return "{\"uuid\":\"" + chatMessage.getUuid() + "\",\"timestamp\":\"" + chatMessage.getTimestamp() + "\",\"server\":\"" + chatMessage.getServer() + "\",\"messageJson\":\"" + chatMessage.getMessageJson() + "\",\"notBlocked\":\"" + chatMessage.isNotBlocked() + "\"}"; + try { + return OBJECT_MAPPER.writeValueAsString(chatMessage); + } catch (JsonProcessingException e) { + throw new IllegalStateException("Failed to serialize ChatMessage to JSON: " + chatMessage.getUuid(), e); + } } } diff --git a/database/src/main/java/com/alttd/altitudeweb/database/chat/ChatLogDao.java b/database/src/main/java/com/alttd/altitudeweb/database/chat/ChatLogDao.java index 7b78c85..6725a96 100644 --- a/database/src/main/java/com/alttd/altitudeweb/database/chat/ChatLogDao.java +++ b/database/src/main/java/com/alttd/altitudeweb/database/chat/ChatLogDao.java @@ -3,12 +3,14 @@ package com.alttd.altitudeweb.database.chat; import lombok.Builder; import lombok.Getter; +import java.sql.Timestamp; + @Builder @Getter public class ChatLogDao { private final String uuid; - private final long timeStamp; + private final Timestamp timeStamp; private final String server; private final String miniMessage; private final boolean blocked;