update contact list

This commit is contained in:
2025-08-04 16:41:23 +03:30
parent 83a29d5ea1
commit 96fa7264cf
10 changed files with 309 additions and 30 deletions
@@ -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;
}
}