import statusCodes from "../utils/statusCodes"; import express from "express"; const router = express.Router(); import Ajv from "ajv"; import addFormats from "ajv-formats"; const ajv = new Ajv({ allErrors: true }); addFormats(ajv); import schema_account from "../schemas/account_schema.json"; import { addAccount } from "../controllers/addAccount"; import { getAccounts } from "../db/api"; import { rooms } from "../controllers/rooms"; import { messages } from "../controllers/messages"; import { members } from "../controllers/members"; 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); } }); export default router;