aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhongheng Liu <z.liu@outlook.com.gr>2024-01-02 17:44:24 +0200
committerZhongheng Liu <z.liu@outlook.com.gr>2024-01-02 17:44:24 +0200
commitfdedd75807271485dbeb258496c005d1f8704610 (patch)
treee1e569280bf00683815d54ed9768f64fedba0c2d
parentf2d3c948bf424c116c151c45b1a0f6f19e3c24d6 (diff)
downloadepq-api-fdedd75807271485dbeb258496c005d1f8704610.tar.gz
epq-api-fdedd75807271485dbeb258496c005d1f8704610.tar.bz2
epq-api-fdedd75807271485dbeb258496c005d1f8704610.zip
IMPL server-side recover message history API
-rw-r--r--src/main/java/me/imsonmia/epqapi/controller/MessageController.java14
-rw-r--r--src/main/java/me/imsonmia/epqapi/model/Message.java8
2 files changed, 19 insertions, 3 deletions
diff --git a/src/main/java/me/imsonmia/epqapi/controller/MessageController.java b/src/main/java/me/imsonmia/epqapi/controller/MessageController.java
index 781b6ff..a6cefd5 100644
--- a/src/main/java/me/imsonmia/epqapi/controller/MessageController.java
+++ b/src/main/java/me/imsonmia/epqapi/controller/MessageController.java
@@ -1,5 +1,6 @@
package me.imsonmia.epqapi.controller;
+import java.time.Instant;
import java.util.ArrayList;
import org.springframework.messaging.handler.annotation.MessageMapping;
@@ -24,9 +25,16 @@ public class MessageController {
// Forward message to subscribers of Stomp endpoint
return message;
}
- @GetMapping("/chat/history/{from}")
- public ArrayList<Message> getMessagesFromTimestamp(@PathVariable(value = "from") Long fromTimestamp) {
- return new ArrayList<Message>();
+ @GetMapping("/api/v1/chat/history/{from}")
+ public ArrayList<Message> getMessagesFromTimestamp(@PathVariable(value = "from") long fromTimestamp) {
+ ArrayList<Message> messages = new ArrayList<>();
+ Instant targetInstant = Instant.ofEpochMilli(fromTimestamp);
+ for (Message msg : repository.findAll()) {
+ Instant t = Instant.ofEpochMilli(msg.getTimestamp());
+ if (t.isBefore(targetInstant)) {continue;}
+ messages.add(msg);
+ }
+ return messages;
}
// @GetMapping("/msg/{id}")
// public ChatMessage getMessageById(@PathVariable(value = "id") Long id) {
diff --git a/src/main/java/me/imsonmia/epqapi/model/Message.java b/src/main/java/me/imsonmia/epqapi/model/Message.java
index 1de1e15..1714769 100644
--- a/src/main/java/me/imsonmia/epqapi/model/Message.java
+++ b/src/main/java/me/imsonmia/epqapi/model/Message.java
@@ -1,5 +1,6 @@
package me.imsonmia.epqapi.model;
+
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
@@ -14,6 +15,7 @@ public class Message {
private String from;
private String to;
private String content;
+ private Long timestamp;
public Long getId() {
return id;
}
@@ -35,4 +37,10 @@ public class Message {
public void setContent(String content) {
this.content = content;
}
+ public Long getTimestamp() {
+ return timestamp;
+ }
+ public void setTimestamp(Long timestamp) {
+ this.timestamp = timestamp;
+ }
}