From 12745c207dd3b83a0a9b7e5324a2849f12490774 Mon Sep 17 00:00:00 2001 From: P0nk Date: Sat, 25 Feb 2023 00:40:36 +0100 Subject: [PATCH] Move notes to the Postgres database --- src/main/java/database/note/NoteDao.java | 33 +++++++++---------- .../java/database/note/NoteRowMapper.java | 6 ++-- src/main/java/model/Note.java | 14 ++++---- .../java/net/packet/out/ShowNotesPacket.java | 2 +- .../db/migration/postgresql/V0.2__note.sql | 11 +++++++ src/test/java/service/NoteServiceTest.java | 8 ++--- 6 files changed, 42 insertions(+), 32 deletions(-) create mode 100644 src/main/resources/db/migration/postgresql/V0.2__note.sql diff --git a/src/main/java/database/note/NoteDao.java b/src/main/java/database/note/NoteDao.java index 9bdeb8dcac..dd77e8290c 100644 --- a/src/main/java/database/note/NoteDao.java +++ b/src/main/java/database/note/NoteDao.java @@ -5,7 +5,6 @@ import database.PgDatabaseConnection; import model.Note; import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.JdbiException; -import tools.DatabaseConnection; import java.util.List; import java.util.Optional; @@ -18,13 +17,13 @@ public class NoteDao { } public void save(Note note) { - try (Handle handle = DatabaseConnection.getHandle()) { + try (Handle handle = connection.getHandle()) { handle.createUpdate(""" - INSERT INTO notes (`message`, `from`, `to`, `timestamp`, `fame`, `deleted`) + INSERT INTO note (message, sender, receiver, timestamp, fame, deleted) VALUES (?, ?, ?, ?, ?, ?)""") .bind(0, note.message()) - .bind(1, note.from()) - .bind(2, note.to()) + .bind(1, note.sender()) + .bind(2, note.receiver()) .bind(3, note.timestamp()) .bind(4, note.fame()) .bind(5, 0) @@ -35,12 +34,12 @@ public class NoteDao { } public List findAllByTo(String to) { - try (Handle handle = DatabaseConnection.getHandle()) { + try (Handle handle = connection.getHandle()) { return handle.createQuery(""" - SELECT * - FROM notes - WHERE `deleted` = 0 - AND `to` = ?""") + SELECT * + FROM note + WHERE deleted = 0 + AND receiver = ?""") .bind(0, to) .mapTo(Note.class) .list(); @@ -50,7 +49,7 @@ public class NoteDao { } public Optional delete(int id) { - try (Handle handle = DatabaseConnection.getHandle()) { + try (Handle handle = connection.getHandle()) { Optional note = findById(handle, id); if (note.isEmpty()) { return Optional.empty(); @@ -68,9 +67,9 @@ public class NoteDao { try { note = handle.createQuery(""" SELECT * - FROM notes - WHERE `deleted` = 0 - AND `id` = ?""") + FROM note + WHERE deleted = 0 + AND id = ?""") .bind(0, id) .mapTo(Note.class) .findOne(); @@ -83,9 +82,9 @@ public class NoteDao { private void deleteById(Handle handle, int id) { try { handle.createUpdate(""" - UPDATE notes - SET `deleted` = 1 - WHERE `id` = ?""") + UPDATE note + SET deleted = 1 + WHERE id = ?""") .bind(0, id) .execute(); } catch (JdbiException e) { diff --git a/src/main/java/database/note/NoteRowMapper.java b/src/main/java/database/note/NoteRowMapper.java index fd239a5632..d845ee0b01 100644 --- a/src/main/java/database/note/NoteRowMapper.java +++ b/src/main/java/database/note/NoteRowMapper.java @@ -13,10 +13,10 @@ public class NoteRowMapper implements RowMapper { public Note map(ResultSet rs, StatementContext ctx) throws SQLException { int id = rs.getInt("id"); String message = rs.getString("message"); - String from = rs.getString("from"); - String to = rs.getString("to"); + String sender = rs.getString("sender"); + String receiver = rs.getString("receiver"); long timestamp = rs.getLong("timestamp"); int fame = rs.getInt("fame"); - return new Note(id, message, from, to, timestamp, fame); + return new Note(id, message, sender, receiver, timestamp, fame); } } diff --git a/src/main/java/model/Note.java b/src/main/java/model/Note.java index 9b85643d8d..658c5ddaa6 100644 --- a/src/main/java/model/Note.java +++ b/src/main/java/model/Note.java @@ -2,20 +2,20 @@ package model; import java.util.Objects; -public record Note(int id, String message, String from, String to, long timestamp, int fame) { +public record Note(int id, String message, String sender, String receiver, long timestamp, int fame) { private static final int PLACEHOLDER_ID = -1; public Note { Objects.requireNonNull(message); - Objects.requireNonNull(from); - Objects.requireNonNull(to); + Objects.requireNonNull(sender); + Objects.requireNonNull(receiver); } - public static Note createNormal(String message, String from, String to, long timestamp) { - return new Note(PLACEHOLDER_ID, message, from, to, timestamp, 0); + public static Note createNormal(String message, String sender, String receiver, long timestamp) { + return new Note(PLACEHOLDER_ID, message, sender, receiver, timestamp, 0); } - public static Note createGift(String message, String from, String to, long timestamp) { - return new Note(PLACEHOLDER_ID, message, from, to, timestamp, 1); + public static Note createGift(String message, String sender, String receiver, long timestamp) { + return new Note(PLACEHOLDER_ID, message, sender, receiver, timestamp, 1); } } diff --git a/src/main/java/net/packet/out/ShowNotesPacket.java b/src/main/java/net/packet/out/ShowNotesPacket.java index f2b05160ac..def2f59293 100644 --- a/src/main/java/net/packet/out/ShowNotesPacket.java +++ b/src/main/java/net/packet/out/ShowNotesPacket.java @@ -22,7 +22,7 @@ public final class ShowNotesPacket extends ByteBufOutPacket { private void writeNote(Note note) { writeInt(note.id()); - writeString(note.from() + " "); //Stupid nexon forgot space lol + writeString(note.sender() + " "); //Stupid nexon forgot space lol writeString(note.message()); writeLong(getTime(note.timestamp())); writeByte(note.fame()); diff --git a/src/main/resources/db/migration/postgresql/V0.2__note.sql b/src/main/resources/db/migration/postgresql/V0.2__note.sql new file mode 100644 index 0000000000..ecf0afb6c3 --- /dev/null +++ b/src/main/resources/db/migration/postgresql/V0.2__note.sql @@ -0,0 +1,11 @@ +CREATE TABLE note( + id serial NOT NULL, + receiver text NOT NULL, + sender text NOT NULL, + message text NOT NULL, + timestamp bigint NOT NULL, + fame smallint NOT NULL, + deleted smallint NOT NULL, + PRIMARY KEY (id) +); +GRANT SELECT, INSERT, UPDATE ON note TO ${server-username}; \ No newline at end of file diff --git a/src/test/java/service/NoteServiceTest.java b/src/test/java/service/NoteServiceTest.java index 9ce7c3cad9..f23de1ae84 100644 --- a/src/test/java/service/NoteServiceTest.java +++ b/src/test/java/service/NoteServiceTest.java @@ -46,8 +46,8 @@ class NoteServiceTest { verify(noteDao).save(noteCaptor.capture()); var note = noteCaptor.getValue(); assertEquals(message, note.message()); - assertEquals(from, note.from()); - assertEquals(to, note.to()); + assertEquals(from, note.sender()); + assertEquals(to, note.receiver()); assertEquals(0, note.fame()); } @@ -64,8 +64,8 @@ class NoteServiceTest { verify(noteDao).save(noteCaptor.capture()); var note = noteCaptor.getValue(); assertEquals(message, note.message()); - assertEquals(from, note.from()); - assertEquals(to, note.to()); + assertEquals(from, note.sender()); + assertEquals(to, note.receiver()); assertEquals(1, note.fame()); }