diff --git a/back/abl/Account-abl.ts b/back/abl/Account-abl.ts index b47f6a7..bc30bcf 100644 --- a/back/abl/Account-abl.ts +++ b/back/abl/Account-abl.ts @@ -1,6 +1,7 @@ import { Response } from "express"; -import { getAccounts, registerAccount } from "../db/api-db"; +import { getAccounts, getRooms, registerAccount } from "../db/api-db"; import { getAddressId } from "../db/utils/mail"; +import logger from "../system/Logger"; import statusCodes from "../utils/statusCodes"; export default class Account { @@ -23,4 +24,16 @@ export default class Account { }); // todo change mailbox to account } + + static async getRooms(body, res: Response) { + const { mailboxId, offset, limit } = body; + getRooms(mailboxId) + .then((rooms) => { + res.status(statusCodes.OK).json(rooms); + }) + .catch((err) => { + logger.err(err); + res.status(statusCodes.INTERNAL_SERVER_ERROR); + }); + } } diff --git a/back/abl/Room-abl.ts b/back/abl/Room-abl.ts index 8ba2136..2a23c0f 100644 --- a/back/abl/Room-abl.ts +++ b/back/abl/Room-abl.ts @@ -61,18 +61,6 @@ export default class Room { } } - 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) diff --git a/back/routes/account.ts b/back/routes/account.ts new file mode 100644 index 0000000..9065fe9 --- /dev/null +++ b/back/routes/account.ts @@ -0,0 +1,28 @@ +import express from "express"; +import Account from "../abl/Account-abl"; +import validator from "../validator/validator"; +const router = express.Router(); + +/** + * Return all mailboxes and folders for an user + */ +router.get("/getAll", async (req, res) => { + await validator.validate("getAccounts", req.params, res, Account.getAll); +}); + +/** + * Register a new mailbox inside the app + */ +router.post("/create", async (req, res) => { + await validator.validate("createAccount", req.body, res, Account.register); +}); + +/** + * Return all rooms from a mailbox + */ + router.get("/:mailboxId/rooms", async (req, res) => { + // todo offet limit + await validator.validate("getRooms", req.params, res, Account.getRooms); +}); + +export default router; diff --git a/back/routes/mail.ts b/back/routes/mail.ts deleted file mode 100644 index 4e1c228..0000000 --- a/back/routes/mail.ts +++ /dev/null @@ -1,57 +0,0 @@ -import express from "express"; -const router = express.Router(); - -import Message from "../abl/Message-abl"; -import Account from "../abl/Account-abl"; -import validator from "../validator/validator"; -import Room from "../abl/Room-abl"; - -/** - * Return all mailboxes and folders for an user - */ -router.get("/accounts", async (req, res) => { - await validator.validate("getAccounts", req.params, res, Account.getAll); -}); - -/** - * Return all rooms from a mailbox - */ -router.get("/:mailboxId/rooms", async (req, res) => { - // todo offet limit - await validator.validate("getRooms", req.params, res, Room.getAll); -}); - -/** - * Return all messages from a room - */ -router.get("/:roomId/messages", async (req, res) => { - await validator.validate("getMessages", req.params, res, Room.getMessages); -}); - -/** - * Return all members from a room - */ -router.get("/:roomId/members", async (req, res) => { - await validator.validate("getMembers", req.params, res, Room.getMembers); -}); - -/** - * Register a new mailbox inside the app - */ -router.post("/account", async (req, res) => { - await validator.validate("createAccount", req.body, res, Account.register); -}); - -router.post("/addFlag", async (req, res) => { - await validator.validate("addFlag", req.body, res, Message.addFlag); -}); - -router.post("/removeFlag", async (req, res) => { - await validator.validate("removeFlag", req.body, res, Message.removeFlag); -}); - -router.post("/response", async (req, res) => { - await validator.validate("response", req.body, res, Room.response); -}); - -export default router; diff --git a/back/routes/message.ts b/back/routes/message.ts new file mode 100644 index 0000000..7a34c51 --- /dev/null +++ b/back/routes/message.ts @@ -0,0 +1,15 @@ +import express from "express"; +import Message from "../abl/Message-abl"; +import validator from "../validator/validator"; +const router = express.Router(); + +router.post("/addFlag", async (req, res) => { + await validator.validate("addFlag", req.body, res, Message.addFlag); +}); + +router.post("/removeFlag", async (req, res) => { + await validator.validate("removeFlag", req.body, res, Message.removeFlag); +}); + + +export default router; diff --git a/back/routes/room.ts b/back/routes/room.ts new file mode 100644 index 0000000..cfe063e --- /dev/null +++ b/back/routes/room.ts @@ -0,0 +1,24 @@ +import express from "express"; +import Room from "../abl/Room-abl"; +import validator from "../validator/validator"; +const router = express.Router(); + +/** + * Return all messages from a room + */ +router.get("/messages", async (req, res) => { + await validator.validate("getMessages", req.params, res, Room.getMessages); +}); + +/** + * Return all members from a room + */ +router.get("/:roomId/members", async (req, res) => { + await validator.validate("getMembers", req.params, res, Room.getMembers); +}); + +router.post("/response", async (req, res) => { + await validator.validate("response", req.body, res, Room.response); +}); + +export default router; diff --git a/back/server.ts b/back/server.ts index 65b8148..93b167d 100644 --- a/back/server.ts +++ b/back/server.ts @@ -2,8 +2,10 @@ import express from "express"; import cors from "cors"; const app = express(); import { execQueryAsync, execQuery } from "./db/db"; -import mailRouter from "./routes/mail"; import emailManager from "./mails/EmailManager"; +import accountRouter from "./routes/account"; +import roomRouter from "./routes/room"; +import messageRouter from "./routes/message"; app.use(express.json()); app.use( @@ -14,8 +16,11 @@ app.use( app.use(cors()); app.listen(process.env.PORT || 5500); -app.use("/api/mail", mailRouter); +app.use("/api/mailbox", accountRouter); +app.use("/api/room", roomRouter); +app.use("/api/message", messageRouter); +// create imap and smtp instances for each account emailManager.init(); // debug reset all tables