load message in front
This commit is contained in:
@@ -12,9 +12,11 @@ async function registerMailbox(userId, pwd, xoauth, xoauth2, host, port, tls) {
|
||||
|
||||
async function getMailboxes() {
|
||||
const query = `
|
||||
SELECT app_account.account_id AS id, address.email
|
||||
FROM app_account INNER JOIN address
|
||||
WHERE address.address_id = app_account.user_id
|
||||
SELECT
|
||||
app_account.account_id AS id,
|
||||
address.email
|
||||
FROM app_account INNER JOIN address
|
||||
WHERE address.address_id = app_account.user_id
|
||||
`;
|
||||
const values = [];
|
||||
return await execQueryAsync(query, values);
|
||||
@@ -46,31 +48,68 @@ async function getRooms(mailboxId) {
|
||||
|
||||
async function getMessages(roomId) {
|
||||
// todo attachements name
|
||||
// todo html, text, textAsHtml
|
||||
// todo datetime
|
||||
const query = `
|
||||
SELECT
|
||||
address_field.address_id,
|
||||
bodypart.text,
|
||||
header_field.value
|
||||
FROM bodypart
|
||||
INNER JOIN header_field
|
||||
INNER JOIN address_field
|
||||
INNER JOIN field_name
|
||||
msg.message_id AS id,
|
||||
GROUP_CONCAT(fromT.address_id) AS fromA,
|
||||
GROUP_CONCAT(toT.address_id) AS toA,
|
||||
GROUP_CONCAT(ccT.address_id) AS ccA,
|
||||
subjectT.value AS subject,
|
||||
content.text AS content,
|
||||
message.idate AS date
|
||||
FROM app_room_message msg
|
||||
|
||||
LEFT JOIN (
|
||||
SELECT address_field.address_id, address_field.message_id
|
||||
FROM address_field
|
||||
INNER JOIN field_name
|
||||
WHERE
|
||||
(
|
||||
header_field.field_id = field_name.field_id OR
|
||||
address_field.field_id = field_name.field_id
|
||||
) AND
|
||||
(
|
||||
field_name.field_name = 'html' OR
|
||||
field_name.field_name = 'text' OR
|
||||
field_name.field_name = 'textAsHtml' OR
|
||||
field_name.field_name = 'to' OR
|
||||
field_name.field_name = 'cc' OR
|
||||
field_name.field_name = 'subject'
|
||||
)
|
||||
`;
|
||||
// todo roomID
|
||||
const values = [];
|
||||
field_name.field_id = address_field.field_id AND
|
||||
field_name.field_name = 'from'
|
||||
) fromT ON msg.message_id = fromT.message_id
|
||||
LEFT JOIN (
|
||||
SELECT address_field.address_id, address_field.message_id
|
||||
FROM address_field
|
||||
INNER JOIN field_name
|
||||
WHERE
|
||||
field_name.field_id = address_field.field_id AND
|
||||
field_name.field_name = 'to'
|
||||
) toT ON msg.message_id = toT.message_id
|
||||
LEFT JOIN (
|
||||
SELECT address_field.address_id, address_field.message_id
|
||||
FROM address_field
|
||||
INNER JOIN field_name
|
||||
WHERE
|
||||
field_name.field_id = address_field.field_id AND
|
||||
field_name.field_name = 'cc'
|
||||
) ccT ON msg.message_id = ccT.message_id
|
||||
|
||||
LEFT JOIN (
|
||||
SELECT header_field.message_id, header_field.value
|
||||
FROM header_field
|
||||
INNER JOIN field_name
|
||||
WHERE
|
||||
field_name.field_id = header_field.field_id AND
|
||||
field_name.field_name = 'subject'
|
||||
) subjectT ON msg.message_id = subjectT.message_id
|
||||
|
||||
LEFT JOIN (
|
||||
SELECT bodypart.text, header_field.message_id FROM bodypart
|
||||
INNER JOIN header_field
|
||||
INNER JOIN field_name
|
||||
WHERE
|
||||
field_name.field_id = header_field.field_id AND
|
||||
field_name.field_name = 'html' AND
|
||||
bodypart.bodypart_id = header_field.bodypart_id
|
||||
) content ON msg.message_id = content.message_id
|
||||
|
||||
INNER JOIN message ON message.message_id = msg.message_id
|
||||
WHERE msg.room_id = ?
|
||||
GROUP BY msg.message_id;
|
||||
`;
|
||||
const values = [roomId];
|
||||
return await execQueryAsync(query, values);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,10 +14,10 @@ async function registerMessage(timestamp, rfc822size, messageId) {
|
||||
function registerMailbox_message(mailboxId, uid, messageId, modseq, seen, deleted) {
|
||||
const query = `
|
||||
INSERT IGNORE INTO mailbox_message
|
||||
(mailbox_id, uid, message_id, modseq, seen, deleted) VALUES (1, 19, 10, '12450', 0, 0)
|
||||
(mailbox_id, uid, message_id, modseq, seen, deleted) VALUES (?, ?, ?, ?, ?, ?)
|
||||
`;
|
||||
// todo
|
||||
const values = [mailboxId, uid, messageId, modseq, seen, deleted];
|
||||
console.log(values)
|
||||
execQuery(query, values);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ async function createRoom(roomName, ownerId, messageId) {
|
||||
}
|
||||
|
||||
async function registerMessageInRoom(messageId, roomId, isSeen) {
|
||||
const query = `INSERT INTO app_space_message (message_id, room_id) VALUES (?, ?)`;
|
||||
const query = `INSERT IGNORE INTO app_room_message (message_id, room_id) VALUES (?, ?)`;
|
||||
const values = [messageId, roomId];
|
||||
await execQueryAsync(query, values);
|
||||
|
||||
@@ -68,8 +68,8 @@ async function isRoomGroup(roomId) {
|
||||
});
|
||||
}
|
||||
|
||||
async function findSpacesFromMessage(messageId) {
|
||||
const query = `SELECT room_id, thread_id FROM app_space_message WHERE message_id = '${messageId}'`;
|
||||
async function findRoomsFromMessage(messageId) {
|
||||
const query = `SELECT room_id FROM app_room_message WHERE message_id = '${messageId}'`;
|
||||
return await execQueryAsync(query);
|
||||
}
|
||||
|
||||
@@ -85,5 +85,5 @@ module.exports = {
|
||||
createThread,
|
||||
registerMessageInThread,
|
||||
isRoomGroup,
|
||||
findSpacesFromMessage,
|
||||
findRoomsFromMessage,
|
||||
};
|
||||
|
||||
@@ -131,25 +131,24 @@ CREATE TABLE app_room (
|
||||
|
||||
-- 12
|
||||
CREATE TABLE app_thread (
|
||||
thread_id INT AUTO_INCREMENT,
|
||||
room_id INT NOT NULL,
|
||||
thread_name VARCHAR(255) NOT NULL,
|
||||
notSeen INT NOT NULL DEFAULT 0,
|
||||
lastUpdate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
parent_room_id INT,
|
||||
root_room_id INT,
|
||||
isDm BOOLEAN NOT NULL DEFAULT false,
|
||||
PRIMARY KEY (thread_id),
|
||||
FOREIGN KEY (room_id) REFERENCES app_room(room_id) ON DELETE CASCADE
|
||||
PRIMARY KEY (room_id),
|
||||
UNIQUE KEY (room_id, parent_room_id, root_room_id),
|
||||
FOREIGN KEY (room_id) REFERENCES app_room(room_id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (parent_room_id) REFERENCES app_room(room_id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (root_room_id) REFERENCES app_room(room_id) ON DELETE SET NULL
|
||||
);
|
||||
|
||||
-- 13
|
||||
CREATE TABLE app_space_message (
|
||||
CREATE TABLE app_room_message (
|
||||
message_id INT NOT NULL,
|
||||
room_id INT,
|
||||
thread_id INT,
|
||||
UNIQUE KEY (message_id, room_id, thread_id),
|
||||
UNIQUE KEY (message_id, room_id),
|
||||
FOREIGN KEY (message_id) REFERENCES message(message_id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (room_id) REFERENCES app_room(room_id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (thread_id) REFERENCES app_thread(thread_id) ON DELETE SET NULL
|
||||
FOREIGN KEY (room_id) REFERENCES app_room(room_id) ON DELETE SET NULL
|
||||
);
|
||||
|
||||
-- 14
|
||||
@@ -159,11 +158,3 @@ CREATE TABLE app_room_member (
|
||||
FOREIGN KEY (room_id) REFERENCES app_room(room_id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (member_id) REFERENCES address(address_id)
|
||||
);
|
||||
|
||||
-- 14
|
||||
CREATE TABLE app_thread_member (
|
||||
thread_id INT NOT NULL,
|
||||
member_id INT NOT NULL,
|
||||
FOREIGN KEY (thread_id) REFERENCES app_thread(thread_id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (member_id) REFERENCES address(address_id)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user