54 lines
1.8 KiB
Java
54 lines
1.8 KiB
Java
package shine.db.dao;
|
|
|
|
import shine.db.SqliteDbController;
|
|
import shine.db.entities.DirectMessageEntry;
|
|
|
|
import java.sql.Connection;
|
|
import java.sql.PreparedStatement;
|
|
|
|
public final class DirectMessagesDAO {
|
|
private static volatile DirectMessagesDAO instance;
|
|
private final SqliteDbController db = SqliteDbController.getInstance();
|
|
|
|
private DirectMessagesDAO() {}
|
|
|
|
public static DirectMessagesDAO getInstance() {
|
|
if (instance == null) {
|
|
synchronized (DirectMessagesDAO.class) {
|
|
if (instance == null) instance = new DirectMessagesDAO();
|
|
}
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
public void insert(DirectMessageEntry entry) throws Exception {
|
|
try (Connection c = db.getConnection()) {
|
|
String sql = """
|
|
INSERT INTO direct_messages (
|
|
message_id, from_login, to_login, text, created_at_ms
|
|
) VALUES (?, ?, ?, ?, ?)
|
|
""";
|
|
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
|
ps.setString(1, entry.getMessageId());
|
|
ps.setString(2, entry.getFromLogin());
|
|
ps.setString(3, entry.getToLogin());
|
|
ps.setString(4, entry.getText());
|
|
ps.setLong(5, entry.getCreatedAtMs());
|
|
ps.executeUpdate();
|
|
}
|
|
}
|
|
}
|
|
|
|
public boolean existsFromTo(String fromLogin, String toLogin) throws Exception {
|
|
try (Connection c = db.getConnection()) {
|
|
String sql = "SELECT 1 FROM direct_messages WHERE from_login = ? AND to_login = ? LIMIT 1";
|
|
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
|
ps.setString(1, fromLogin);
|
|
ps.setString(2, toLogin);
|
|
return ps.executeQuery().next();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|