const statusCodes = require("../utils/statusCodes.js").statusCodes; const express = require("express"); const router = express.Router(); const Ajv = require("ajv"); const addFormats = require("ajv-formats"); const ajv = new Ajv({ allErrors: true }); addFormats(ajv); const schema_account = require("../schemas/account_schema.json"); const { addAccount } = require("../controllers/addAccount.js"); const { getAccounts } = require("../db/api.js"); const { rooms } = require("../controllers/rooms.js"); const { messages } = require("../controllers/messages.js"); const validate_account = ajv.compile(schema_account); /** * Return all mailboxes and folders for an user */ router.get("/accounts", (req, res) => { getAccounts().then((data) => { res.status(statusCodes.OK).json(data); }); }); router.get("/:mailboxId/rooms", async (req, res) => { // todo use offset limit await rooms(req.params, res); }); router.get("/:roomId/messages", async (req, res) => { const { roomId } = req.params; await messages(req.params, res); }); router.get("/:roomId/members", async (req, res) => { const { roomId } = req.params; await members(req.params, res); }); /** * Register a new mailbox inside the app */ router.post("/account", async (req, res) => { const valid = validate_account(req.body); if (!valid) { res.status(statusCodes.NOT_ACCEPTABLE).send({ error: validate_account.errors }); } else { await addAccount(req.body, res); } }); module.exports = router;