mirror of
https://github.com/Akif9748/akf-forum.git
synced 2024-11-26 13:20:41 +03:00
49 lines
No EOL
1.4 KiB
JavaScript
49 lines
No EOL
1.4 KiB
JavaScript
const { CategoryModel } = require("../../../models");
|
|
const { Router } = require("express")
|
|
|
|
const app = Router();
|
|
|
|
app.use((req, res, next) => {
|
|
if (!req.user.admin) return res.error(403, "You have not got permission for this.");
|
|
next();
|
|
});
|
|
|
|
app.param("id", async (req, res, next, id) => {
|
|
req.category = await CategoryModel.findOne({ id });
|
|
if (!req.category) return res.error(404, `We don't have any category with id ${id}.`);
|
|
next();
|
|
});
|
|
|
|
app.get("/", async (req, res) => {
|
|
const categories = await CategoryModel.find({});
|
|
res.complate(categories);
|
|
});
|
|
|
|
app.get("/:id", async (req, res) => {
|
|
const { category } = req;
|
|
res.complate(category);
|
|
});
|
|
|
|
app.patch("/:id", async (req, res) => {
|
|
const { category } = req;
|
|
if (req.body.name) category.name = req.body.name;
|
|
if (req.body.desp) category.name = req.body.name;
|
|
res.complate(await category.save());
|
|
});
|
|
|
|
app.delete("/:id", async (req, res) => {
|
|
res.complate(await CategoryModel.deleteOne({ id: req.params.id }));
|
|
});
|
|
|
|
app.post("/", async (req, res) => {
|
|
const { name, desp } = req.body;
|
|
if (!name) return res.error(400, "You have to give a name for the category.");
|
|
|
|
if (await CategoryModel.exists({ name })) return res.error(400, "This category is already opened.");
|
|
const category = await new CategoryModel({ name, desp, authorID: req.user.id }).takeId();
|
|
res.complate(await category.save());
|
|
|
|
});
|
|
|
|
|
|
module.exports = app; |