mail/back/db/utils/mail.ts
2023-07-14 19:05:37 +02:00

77 lines
3.1 KiB
TypeScript

import { execQueryAsync, execQueryAsyncWithId } from "../db";
export async function getAddressId(email: string, name?: string): Promise<number> {
const localpart = email.split("@")[0];
const domain = email.split("@")[1];
const query = `INSERT INTO address
(address_name, localpart, domain, email) VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE address_name = ?, address_id = LAST_INSERT_ID(address_id)`;
const values = [name, localpart, domain, email, name];
return await execQueryAsyncWithId(query, values);
}
export async function getAddresses(ids: number | number[]): Promise<{ id: number, email: string }[]> {
const query = `SELECT address_id AS id, email FROM address WHERE address_id IN (?)`;
const values = [ids];
return await execQueryAsync(query, values);
}
export async function getFieldId(field: string): Promise<number> {
const query = `INSERT INTO field_name (field_name) VALUES (?) ON DUPLICATE KEY UPDATE field_id=LAST_INSERT_ID(field_id)`;
const values = [field];
return await execQueryAsyncWithId(query, values);
}
export async function getFlagId(flag: string): Promise<number> {
const query = `INSERT INTO flag_name (flag_name) VALUES (?) ON DUPLICATE KEY UPDATE flag_id=LAST_INSERT_ID(flag_id)`;
const values = [flag];
return await execQueryAsyncWithId(query, values);
}
export async function getMessageIdOnUid(uid: number): Promise<{ message_id: number }[]> {
const query = `SELECT message_id FROM mailbox_message WHERE uid = ?`;
const values = [uid];
return await execQueryAsync(query, values);
}
export async function getMessageUid(messageId: number): Promise<{uid: number}[]> {
const query = `SELECT uid FROM mailbox_message WHERE message_id = ?`;
const values = [messageId];
return await execQueryAsync(query, values);
}
export async function getMessageIdOnID(messageID: string): Promise<{message_id: number}[]> {
const query = `SELECT message_id FROM message WHERE messageID = ?`;
const values = [messageID];
return await execQueryAsync(query, values);
}
export async function findRoomByOwner(ownerId: number): Promise<{ room_id: number }[]> {
const query = `SELECT room_id FROM app_room WHERE owner_id = ?`;
const values = [ownerId];
return await execQueryAsync(query, values);
}
export async function getUserIdOfMailbox(boxId: number): Promise<{ user_id: number }[]> {
const query = `
SELECT app_account.user_id
FROM mailbox
INNER JOIN app_account ON app_account.account_id = mailbox.account_id
WHERE mailbox.mailbox_id = ?
`;
const values = [boxId];
return await execQueryAsync(query, values);
}
export async function getUserOfMailbox(mailboxId: number): Promise<{ user: string }[]> {
const query = `
SELECT address.email AS user
FROM mailbox
INNER JOIN app_account ON app_account.account_id = mailbox.account_id
INNER JOIN address on address.address_id = app_account.user_id
WHERE mailbox.mailbox_id = ?
`;
const values = [mailboxId];
return await execQueryAsync(query, values);
}