Files
kno-logic-api/routes/category.route.js
2021-05-19 20:08:04 -04:00

78 lines
2.1 KiB
JavaScript

const utils = require('../utils/utils');
const express = require('express');
const categoryRoutes = express.Router();
let Post = require('../schema/post.model');
let Category = require('../schema/category.model');
let Session = require('../schema/session.model');
let User = require('../schema/user.model');
/*
POST - /category/create
Create a category
Response: 201 - Created
401 - Unauthorized
*/
categoryRoutes.route('/create').post((req, res) => {
if (!req.body) {
res.status(401).send("Missing body");
return;
}
utils.account.checkSession(req.body.userId, req.body.sessionId, (isValidId) => {
utils.account.isAdmin(req.body.userId, (isAdmin) => {
if (isValidId && isAdmin) {
let c = new Category(req.body);
c.save()
.then(() => {
res.json(c);
})
.catch((e) => {
console.error(e);
res.status(500).send("Error creating category");
});
} else {
res.status(401).send("Invalid permissions to create category.");
return;
}
})
});
});
/*
GET - /category/all
Get all categories
Response: 200 - OK
*/
categoryRoutes.route('/all').get((req, res) => {
Category.find({}, (err, cArr) => {
if (err) {
console.error(err);
res.status(500).send("Error getting categories");
return;
}
res.status(200).send(cArr);
});
});
/*
GET - /category/posts
Get all posts with specified category
Response: 200 - OK
*/
categoryRoutes.route('/posts').get((req, res) => {
Post.find({}, (err, postArr) => {
if (err) {
console.error(err);
res.status(500).send("Error getting posts");
return;
}
postArr = postArr.filter(post => post.category.includes(req.body._id));
res.status(200).send(postArr);
});
});
module.exports = categoryRoutes;