update backend api architecture

This commit is contained in:
grimhilt 2023-05-02 12:25:50 +02:00
parent 29b4b7bfeb
commit 12e508c7cb
6 changed files with 40 additions and 50 deletions

View File

@ -6,6 +6,8 @@ import { getLastMsgData, getRoomOwner } from "../db/Room-db";
import emailManager from "../mails/EmailManager"; import emailManager from "../mails/EmailManager";
import MailBuilder from "../mails/utils/mailBuilder"; import MailBuilder from "../mails/utils/mailBuilder";
import { getAddresses } from "../db/utils/mail"; import { getAddresses } from "../db/utils/mail";
import { getMembers, getMessages, getRooms } from "../db/api-db";
import logger from "../system/Logger";
function rmUserFromAddrs(addresses: { email: string }[], user: string) { function rmUserFromAddrs(addresses: { email: string }[], user: string) {
let index = addresses.findIndex((a) => a.email == user); let index = addresses.findIndex((a) => a.email == user);
@ -58,4 +60,39 @@ export default class Room {
res.status(statusCode.FORBIDDEN).send({ error: "Cannot add a new message in a room or a channel." }); res.status(statusCode.FORBIDDEN).send({ error: "Cannot add a new message in a room or a channel." });
} }
} }
static async getAll(body, res: Response) {
const { mailboxId, offset, limit } = body;
getRooms(mailboxId)
.then((rooms) => {
res.status(statusCode.OK).json(rooms);
})
.catch((err) => {
logger.err(err);
res.status(statusCode.INTERNAL_SERVER_ERROR);
});
}
static async getMessages(body, res: Response) {
const { roomId } = body;
getMessages(roomId)
.then((messages) => {
res.status(statusCode.OK).json(messages);
})
.catch((err) => {
logger.err(err);
res.status(statusCode.INTERNAL_SERVER_ERROR);
});
}
static async getMembers(body, res) {
const { roomId } = body;
getMembers(roomId).then((addresses) => {
res.status(statusCode.OK).json(addresses);
}).catch((err) => {
logger.err(err)
res.status(statusCode.INTERNAL_SERVER_ERROR);
});
}
} }

View File

@ -1,13 +0,0 @@
import statusCode from "../utils/statusCodes";
import { getMembers } from "../db/api-db";
import logger from "../system/Logger";
export async function members(body, res) {
const { roomId } = body;
getMembers(roomId).then((addresses) => {
res.status(statusCode.OK).json(addresses);
}).catch((err) => {
logger.err(err)
res.status(statusCode.INTERNAL_SERVER_ERROR);
});
}

View File

@ -1,16 +0,0 @@
import statusCode from "../utils/statusCodes";
import { getMessages } from "../db/api-db";
import logger from "../system/Logger";
import { Response } from "express";
export async function messages(body, res: Response) {
const { roomId } = body;
getMessages(roomId)
.then((messages) => {
res.status(statusCode.OK).json(messages);
})
.catch((err) => {
logger.err(err);
res.status(statusCode.INTERNAL_SERVER_ERROR);
});
}

View File

@ -1,14 +0,0 @@
import statusCode from "../utils/statusCodes";
import { getRooms } from "../db/api-db";
import logger from "../system/Logger";
import { Response } from "express";
export async function rooms(body, res: Response) {
const { mailboxId, offset, limit } = body;
getRooms(mailboxId).then((rooms) => {
res.status(statusCode.OK).json(rooms);
}).catch((err) => {
logger.err(err)
res.status(statusCode.INTERNAL_SERVER_ERROR);
});
}

View File

@ -35,7 +35,6 @@ export default class Mailbox {
this.box = (await getMailbox(this.id))[0]; this.box = (await getMailbox(this.id))[0];
const isReadOnly = false; const isReadOnly = false;
this.imap.openBox(this.boxName, isReadOnly, (err, box) => { this.imap.openBox(this.boxName, isReadOnly, (err, box) => {
console.log(typeof(box.highestmodseq))
if (err) logger.err(err); if (err) logger.err(err);
// sync messages and flags // sync messages and flags

View File

@ -1,10 +1,7 @@
import express from "express"; import express from "express";
const router = express.Router(); const router = express.Router();
import { rooms } from "../abl/rooms";
import Message from "../abl/Message-abl"; import Message from "../abl/Message-abl";
import { messages } from "../abl/messages";
import { members } from "../abl/members";
import Account from "../abl/Account-abl"; import Account from "../abl/Account-abl";
import validator from "../validator/validator"; import validator from "../validator/validator";
import Room from "../abl/Room-abl"; import Room from "../abl/Room-abl";
@ -21,21 +18,21 @@ router.get("/accounts", async (req, res) => {
*/ */
router.get("/:mailboxId/rooms", async (req, res) => { router.get("/:mailboxId/rooms", async (req, res) => {
// todo offet limit // todo offet limit
await validator.validate("getRooms", req.params, res, rooms); await validator.validate("getRooms", req.params, res, Room.getAll);
}); });
/** /**
* Return all messages from a room * Return all messages from a room
*/ */
router.get("/:roomId/messages", async (req, res) => { router.get("/:roomId/messages", async (req, res) => {
await validator.validate("getMessages", req.params, res, messages); await validator.validate("getMessages", req.params, res, Room.getMessages);
}); });
/** /**
* Return all members from a room * Return all members from a room
*/ */
router.get("/:roomId/members", async (req, res) => { router.get("/:roomId/members", async (req, res) => {
await validator.validate("getMembers", req.params, res, members); await validator.validate("getMembers", req.params, res, Room.getMembers);
}); });
/** /**