fetch rooms
This commit is contained in:
17
back/controllers/rooms.js
Normal file
17
back/controllers/rooms.js
Normal file
@@ -0,0 +1,17 @@
|
||||
const statusCode = require("../utils/statusCodes").statusCodes;
|
||||
const { getRooms } = require("../db/api.js");
|
||||
|
||||
async function rooms(body, res) {
|
||||
const { mailboxId, offset, limit } = body;
|
||||
getRooms(mailboxId).then((rooms) => {
|
||||
console.log(rooms)
|
||||
res.status(statusCode.OK).json(rooms);
|
||||
}).catch((err) => {
|
||||
console.log(err)
|
||||
res.status(statusCode.INTERNAL_SERVER_ERROR);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
rooms,
|
||||
};
|
||||
@@ -20,7 +20,32 @@ async function getMailboxes() {
|
||||
return await execQueryAsync(query, values);
|
||||
}
|
||||
|
||||
async function getRooms(mailboxId) {
|
||||
const query = `
|
||||
SELECT
|
||||
app_room.room_id AS id,
|
||||
app_room.room_name AS roomName,
|
||||
address.email AS user,
|
||||
app_room.owner_id AS userId,
|
||||
app_room.notSeen,
|
||||
mailbox_message.mailbox_id AS mailboxId
|
||||
FROM app_room
|
||||
INNER JOIN message
|
||||
INNER JOIN mailbox_message
|
||||
INNER JOIN address
|
||||
WHERE
|
||||
message.message_id = app_room.message_id AND
|
||||
mailbox_message.mailbox_id = 1 AND
|
||||
mailbox_message.message_id = message.message_id AND
|
||||
address.address_id = app_room.owner_id
|
||||
`;
|
||||
// todo mailboxId
|
||||
const values = [];
|
||||
return await execQueryAsync(query, values);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
registerMailbox,
|
||||
getMailboxes
|
||||
getMailboxes,
|
||||
getRooms
|
||||
};
|
||||
|
||||
@@ -9,6 +9,7 @@ addFormats(ajv);
|
||||
const schema_mailbox = require("../schemas/mailbox_schema.json");
|
||||
const { addMailbox } = require("../controllers/addMailbox.js");
|
||||
const { getMailboxes } = require("../db/api.js");
|
||||
const { rooms } = require("../controllers/rooms.js");
|
||||
|
||||
const validate_mailbox = ajv.compile(schema_mailbox);
|
||||
|
||||
@@ -28,23 +29,11 @@ router.get("/mailboxes", (req, res) => {
|
||||
* @param {string} token the token of the user
|
||||
* @return {object} a list of room and their preview (subject)
|
||||
*/
|
||||
router.get("/{mailboxId}/messages", (req, res) => {
|
||||
router.get("/:mailboxId/rooms", async (req, res) => {
|
||||
const { mailboxId, offset, limit } = req.params;
|
||||
// todo check token
|
||||
// todo use offset
|
||||
const query = `
|
||||
SELECT app_room.room_id, app_room.room_name, app_room.owner_id, app_room.notSeen, mailbox_message.mailbox_id, address.email
|
||||
FROM app_room
|
||||
INNER JOIN message
|
||||
INNER JOIN mailbox_message
|
||||
INNER JOIN address
|
||||
WHERE
|
||||
message.message_id = app_room.message_id AND
|
||||
mailbox_message.mailbox_id = 1 AND
|
||||
mailbox_message.message_id = message.message_id AND
|
||||
address.address_id = app_room.owner_id
|
||||
`;
|
||||
const values = [mailboxId];
|
||||
await rooms(req.params, res);
|
||||
|
||||
});
|
||||
|
||||
|
||||
14
back/schemas/mailbox_schema.json
Normal file
14
back/schemas/mailbox_schema.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"email": { "type": "string", "format": "email" },
|
||||
"pwd": { "type": "string" },
|
||||
"xoauth": { "type": "string" },
|
||||
"xoauth2": { "type": "string" },
|
||||
"host": { "type": "string", "format": "hostname" },
|
||||
"port": { "type": "number", "maximum": 65535 },
|
||||
"tls": { "type": "boolean" }
|
||||
},
|
||||
"required": ["email", "host", "port", "tls"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
Reference in New Issue
Block a user