aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZhongheng Liu <z.liu@outlook.com.gr>2024-01-02 19:09:15 +0200
committerZhongheng Liu <z.liu@outlook.com.gr>2024-01-02 19:09:15 +0200
commit7bbdb9c85d18b8f6200fec211e14bd6b2ceb373d (patch)
tree8958811e21c09ba76a6056a6f20f5bb71f504d9a /src
parentfdedd75807271485dbeb258496c005d1f8704610 (diff)
downloadepq-api-7bbdb9c85d18b8f6200fec211e14bd6b2ceb373d.tar.gz
epq-api-7bbdb9c85d18b8f6200fec211e14bd6b2ceb373d.tar.bz2
epq-api-7bbdb9c85d18b8f6200fec211e14bd6b2ceb373d.zip
Fixed bug with init of message repository
refactored GetMapping of restore message history function
Diffstat (limited to 'src')
-rw-r--r--src/main/java/me/imsonmia/epqapi/controller/MessageController.java19
-rw-r--r--src/main/java/me/imsonmia/epqapi/controller/UserController.java18
-rw-r--r--src/main/java/me/imsonmia/epqapi/model/ChatMessage.java35
-rw-r--r--src/main/java/me/imsonmia/epqapi/model/Message.java51
-rw-r--r--src/main/java/me/imsonmia/epqapi/model/User.java6
-rw-r--r--src/main/java/me/imsonmia/epqapi/repository/UserRepository.java3
-rw-r--r--src/main/resources/application.properties2
7 files changed, 61 insertions, 73 deletions
diff --git a/src/main/java/me/imsonmia/epqapi/controller/MessageController.java b/src/main/java/me/imsonmia/epqapi/controller/MessageController.java
index a6cefd5..5286d3a 100644
--- a/src/main/java/me/imsonmia/epqapi/controller/MessageController.java
+++ b/src/main/java/me/imsonmia/epqapi/controller/MessageController.java
@@ -1,13 +1,9 @@
package me.imsonmia.epqapi.controller;
-import java.time.Instant;
-import java.util.ArrayList;
-
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
import me.imsonmia.epqapi.model.Message;
import me.imsonmia.epqapi.repository.MessageRepository;
@@ -15,6 +11,7 @@ import me.imsonmia.epqapi.repository.MessageRepository;
@Controller
// @RequestMapping("/api/v1")
public class MessageController {
+ @Autowired
private MessageRepository repository;
@MessageMapping("/chat")
@SendTo("/sub/chat")
@@ -25,17 +22,7 @@ public class MessageController {
// Forward message to subscribers of Stomp endpoint
return 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) {
// return chatMessageRepository.findById(id).get();
diff --git a/src/main/java/me/imsonmia/epqapi/controller/UserController.java b/src/main/java/me/imsonmia/epqapi/controller/UserController.java
index bc7079f..cd35735 100644
--- a/src/main/java/me/imsonmia/epqapi/controller/UserController.java
+++ b/src/main/java/me/imsonmia/epqapi/controller/UserController.java
@@ -1,5 +1,8 @@
package me.imsonmia.epqapi.controller;
+import java.time.Instant;
+import java.util.ArrayList;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -9,7 +12,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import me.imsonmia.epqapi.model.Message;
import me.imsonmia.epqapi.model.User;
+import me.imsonmia.epqapi.repository.MessageRepository;
import me.imsonmia.epqapi.repository.UserRepository;
@RestController
@@ -17,6 +22,8 @@ import me.imsonmia.epqapi.repository.UserRepository;
public class UserController {
@Autowired
private UserRepository userRepository;
+ @Autowired
+ private MessageRepository messageRepository;
@GetMapping("/user/{id}")
public User getUserById(@PathVariable(value = "id") Long id) {
return userRepository.findById(id).get();
@@ -34,4 +41,15 @@ public class UserController {
) {
userRepository.deleteById(id);
}
+ @GetMapping("/msg/{from}")
+ public ArrayList<Message> getMessagesFromTimestamp(@PathVariable(value = "from") Long fromTimestamp) {
+ ArrayList<Message> messages = new ArrayList<>();
+ Instant targetInstant = Instant.ofEpochMilli(fromTimestamp);
+ for (Message msg : messageRepository.findAll()) {
+ Instant t = Instant.ofEpochMilli(msg.getTimeMillis());
+ if (t.isBefore(targetInstant)) {continue;}
+ messages.add(msg);
+ }
+ return messages;
+ }
}
diff --git a/src/main/java/me/imsonmia/epqapi/model/ChatMessage.java b/src/main/java/me/imsonmia/epqapi/model/ChatMessage.java
deleted file mode 100644
index d14336d..0000000
--- a/src/main/java/me/imsonmia/epqapi/model/ChatMessage.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package me.imsonmia.epqapi.model;
-
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.Table;
-import lombok.Getter;
-import lombok.Setter;
-@Entity
-@Table(name = "message")
-public class ChatMessage {
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- @Getter
- Long id;
- @Getter
- @Setter
- Long fromId;
- @Getter
- @Setter
- String text;
- @Getter
- @Setter
- String[] attachments;
- public ChatMessage() {}
- public ChatMessage(
- Long fromId,
- String text
- ) {
- this.fromId = fromId;
- this.text = text;
- }
-
-} \ No newline at end of file
diff --git a/src/main/java/me/imsonmia/epqapi/model/Message.java b/src/main/java/me/imsonmia/epqapi/model/Message.java
index 1714769..f152f0b 100644
--- a/src/main/java/me/imsonmia/epqapi/model/Message.java
+++ b/src/main/java/me/imsonmia/epqapi/model/Message.java
@@ -3,33 +3,34 @@ package me.imsonmia.epqapi.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name = "message")
public class Message {
- @GeneratedValue
+ @GeneratedValue(strategy = GenerationType.AUTO)
@Id
- private Long id;
- private String from;
- private String to;
- private String content;
- private Long timestamp;
+ Long id;
+ String fromUserId;
+ String toUserId;
+ String content;
+ Long timeMillis;
public Long getId() {
return id;
}
- public String getFrom() {
- return this.from;
+ public String getFromUserId() {
+ return fromUserId;
}
- public void setFrom(String from) {
- this.from = from;
+ public String getToUserId() {
+ return toUserId;
}
- public String getTo() {
- return to;
+ public void setFromUserId(String fromUserId) {
+ this.fromUserId = fromUserId;
}
- public void setTo(String to) {
- this.to = to;
+ public void setToUserId(String toUserId) {
+ this.toUserId = toUserId;
}
public String getContent() {
return content;
@@ -37,10 +38,24 @@ public class Message {
public void setContent(String content) {
this.content = content;
}
- public Long getTimestamp() {
- return timestamp;
+ public Long getTimeMillis() {
+ return timeMillis;
}
- public void setTimestamp(Long timestamp) {
- this.timestamp = timestamp;
+ public void setTimeMillis(Long timeMillis) {
+ this.timeMillis = timeMillis;
+ }
+ public Message() {
+
+ }
+ public Message(Long id,
+ String fromUserId,
+ String toUserId,
+ String content,
+ Long timeMillis) {
+ this.id = id;
+ this.fromUserId = fromUserId;
+ this.toUserId = toUserId;
+ this.content = content;
+ this.timeMillis = timeMillis;
}
}
diff --git a/src/main/java/me/imsonmia/epqapi/model/User.java b/src/main/java/me/imsonmia/epqapi/model/User.java
index cce261e..aeee586 100644
--- a/src/main/java/me/imsonmia/epqapi/model/User.java
+++ b/src/main/java/me/imsonmia/epqapi/model/User.java
@@ -16,13 +16,13 @@ public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Getter
- Long id;
+ Long id;
@Getter
@Setter
- String userName;
+ String userName;
@Getter
@Setter
- Date dateJoined;
+ Date dateJoined;
public User() {
}
diff --git a/src/main/java/me/imsonmia/epqapi/repository/UserRepository.java b/src/main/java/me/imsonmia/epqapi/repository/UserRepository.java
index 8b98587..9ee6779 100644
--- a/src/main/java/me/imsonmia/epqapi/repository/UserRepository.java
+++ b/src/main/java/me/imsonmia/epqapi/repository/UserRepository.java
@@ -7,3 +7,6 @@ import me.imsonmia.epqapi.model.User;
public interface UserRepository extends CrudRepository<User, Long> {
User findByUserName(String userName);
}
+// NOTE timestamp is a reserved SQL keyword
+// create table user (date_joined datetime(6), id bigint not null, user_name varchar(255), primary key (id)) engine=InnoDB
+// create table message (id bigint not null, timestamp bigint, content varchar(255), from varchar(255), to varchar(255), primary key (id)) engine=InnoDB \ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 6a29230..0ead42d 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -2,5 +2,5 @@ spring.datasource.url=jdbc:mariadb://127.0.0.1:3306/test
spring.datasource.username=dbuser
spring.datasource.password=dbpasswd
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
-spring.jpa.show-sql: true
+spring.jpa.show-sql: false
spring.jpa.hibernate.ddl-auto=create-drop \ No newline at end of file