import { execQueryAsync, execQueryAsyncWithId } from "../db"; export async function getAddressId(email: string, name?: string): Promise { 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 { 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 { 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); }