update contact list
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package org.to.telegramfinalproject.Database;
|
||||
|
||||
import org.to.telegramfinalproject.Models.Contact;
|
||||
import org.to.telegramfinalproject.Models.ContactEntry;
|
||||
import org.to.telegramfinalproject.Models.User;
|
||||
|
||||
import java.sql.*;
|
||||
@@ -268,5 +269,39 @@ public class ContactDatabase {
|
||||
}
|
||||
}
|
||||
|
||||
public static List<ContactEntry> getContactEntries(UUID userId) {
|
||||
List<ContactEntry> entries = new ArrayList<>();
|
||||
|
||||
String sql = """
|
||||
SELECT c.contact_id, c.is_blocked, u.user_id, u.profile_name, u.image_url
|
||||
FROM contacts c
|
||||
JOIN users u ON c.contact_id = u.internal_uuid
|
||||
WHERE c.user_id = ?
|
||||
""";
|
||||
|
||||
try (Connection conn = ConnectionDb.connect();
|
||||
PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setObject(1, userId);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
|
||||
while (rs.next()) {
|
||||
UUID contactId = UUID.fromString(rs.getString("contact_id"));
|
||||
boolean isBlocked = rs.getBoolean("is_blocked");
|
||||
String userIdStr = rs.getString("user_id");
|
||||
String profileName = rs.getString("profile_name");
|
||||
String imageUrl = rs.getString("image_url");
|
||||
|
||||
ContactEntry entry = new ContactEntry(contactId, userIdStr, profileName, imageUrl, isBlocked);
|
||||
entries.add(entry);
|
||||
}
|
||||
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return entries;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public class MessageDatabase {
|
||||
}
|
||||
|
||||
public static void logDeletedMessagesFor(UUID chatId, UUID userId) {
|
||||
List<Message> messages = MessageDatabase.privateChatHistory(chatId);
|
||||
List<Message> messages = MessageDatabase.privateChatHistory(chatId, userId);
|
||||
for (Message message : messages) {
|
||||
if (!isMessageDeleted(message.getMessage_id(), userId)) {
|
||||
String sql = """
|
||||
@@ -306,18 +306,45 @@ public class MessageDatabase {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<Message> privateChatHistory(UUID chatId) {
|
||||
// public static List<Message> privateChatHistory(UUID chatId) {
|
||||
// List<Message> result = new ArrayList<>();
|
||||
// String sql = """
|
||||
// SELECT * FROM messages
|
||||
// WHERE receiver_type = 'private'
|
||||
// AND receiver_id = ?
|
||||
// ORDER BY send_at
|
||||
// """;
|
||||
//
|
||||
// try (Connection conn = ConnectionDb.connect();
|
||||
// PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
// stmt.setObject(1, chatId);
|
||||
// ResultSet rs = stmt.executeQuery();
|
||||
// while (rs.next()) {
|
||||
// result.add(extractMessage(rs));
|
||||
// }
|
||||
// } catch (SQLException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
|
||||
public static List<Message> privateChatHistory(UUID chatId, UUID userId) {
|
||||
List<Message> result = new ArrayList<>();
|
||||
String sql = """
|
||||
SELECT * FROM messages
|
||||
SELECT * FROM messages
|
||||
WHERE receiver_type = 'private'
|
||||
AND receiver_id = ?
|
||||
AND receiver_id = ?
|
||||
AND is_deleted_globally = FALSE
|
||||
AND message_id NOT IN (
|
||||
SELECT message_id FROM deleted_messages WHERE user_id = ?
|
||||
)
|
||||
ORDER BY send_at
|
||||
""";
|
||||
|
||||
try (Connection conn = ConnectionDb.connect();
|
||||
PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setObject(1, chatId);
|
||||
stmt.setObject(2, userId);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
result.add(extractMessage(rs));
|
||||
@@ -331,11 +358,39 @@ public class MessageDatabase {
|
||||
|
||||
|
||||
|
||||
public static List<Message> groupChatHistory(UUID groupId) {
|
||||
|
||||
// public static List<Message> groupChatHistory(UUID groupId) {
|
||||
// List<Message> result = new ArrayList<>();
|
||||
// String sql = """
|
||||
// SELECT * FROM messages
|
||||
// WHERE receiver_type = 'group' AND receiver_id = ?
|
||||
// ORDER BY send_at
|
||||
// """;
|
||||
//
|
||||
// try (Connection conn = ConnectionDb.connect();
|
||||
// PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
// stmt.setObject(1, groupId);
|
||||
// ResultSet rs = stmt.executeQuery();
|
||||
// while (rs.next()) {
|
||||
// result.add(extractMessage(rs));
|
||||
// }
|
||||
// } catch (SQLException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
|
||||
|
||||
public static List<Message> groupChatHistory(UUID groupId,UUID userId) {
|
||||
List<Message> result = new ArrayList<>();
|
||||
String sql = """
|
||||
SELECT * FROM messages
|
||||
WHERE receiver_type = 'group' AND receiver_id = ?
|
||||
SELECT * FROM messages
|
||||
WHERE receiver_type = 'group'
|
||||
AND receiver_id = ?
|
||||
AND is_deleted_globally = FALSE
|
||||
AND message_id NOT IN (
|
||||
SELECT message_id FROM deleted_messages WHERE user_id = ?
|
||||
)
|
||||
ORDER BY send_at
|
||||
""";
|
||||
|
||||
@@ -353,11 +408,39 @@ public class MessageDatabase {
|
||||
}
|
||||
|
||||
|
||||
public static List<Message> channelChatHistory(UUID channelId) {
|
||||
|
||||
// public static List<Message> channelChatHistory(UUID channelId) {
|
||||
// List<Message> result = new ArrayList<>();
|
||||
// String sql = """
|
||||
// SELECT * FROM messages
|
||||
// WHERE receiver_type = 'channel' AND receiver_id = ?
|
||||
// ORDER BY send_at
|
||||
// """;
|
||||
//
|
||||
// try (Connection conn = ConnectionDb.connect();
|
||||
// PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
// stmt.setObject(1, channelId);
|
||||
// ResultSet rs = stmt.executeQuery();
|
||||
// while (rs.next()) {
|
||||
// result.add(extractMessage(rs));
|
||||
// }
|
||||
// } catch (SQLException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
|
||||
|
||||
public static List<Message> channelChatHistory(UUID channelId,UUID userId) {
|
||||
List<Message> result = new ArrayList<>();
|
||||
String sql = """
|
||||
SELECT * FROM messages
|
||||
WHERE receiver_type = 'channel' AND receiver_id = ?
|
||||
SELECT * FROM messages
|
||||
WHERE receiver_type = 'channel'
|
||||
AND receiver_id = ?
|
||||
AND is_deleted_globally = FALSE
|
||||
AND message_id NOT IN (
|
||||
SELECT message_id FROM deleted_messages WHERE user_id = ?
|
||||
)
|
||||
ORDER BY send_at
|
||||
""";
|
||||
|
||||
@@ -375,6 +458,7 @@ public class MessageDatabase {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static List<Message> searchMessagesInGroups(List<UUID> groupIds, String keyword) {
|
||||
List<Message> result = new ArrayList<>();
|
||||
if (groupIds.isEmpty()) return result;
|
||||
|
||||
@@ -251,7 +251,28 @@ public class PrivateChatDatabase {
|
||||
}
|
||||
|
||||
|
||||
public static UUID findChatBetween(UUID user1, UUID user2) {
|
||||
String sql = """
|
||||
SELECT chat_id FROM private_chat
|
||||
WHERE (user1_id = ? AND user2_id = ?) OR (user1_id = ? AND user2_id = ?)
|
||||
""";
|
||||
|
||||
try (Connection conn = ConnectionDb.connect();
|
||||
PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setObject(1, user1);
|
||||
ps.setObject(2, user2);
|
||||
ps.setObject(3, user2);
|
||||
ps.setObject(4, user1);
|
||||
|
||||
ResultSet rs = ps.executeQuery();
|
||||
if (rs.next()) {
|
||||
return (UUID) rs.getObject("chat_id");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user