ecliptica/server/routers/coder/forum/index.js

97 lines
3.0 KiB
JavaScript
Raw Normal View History

2023-08-01 13:14:02 +03:00
const router = require('express').Router();
const { getResponse } = require('../../../utils/common');
const {
getTags,
connect,
findTags,
insertTag,
getCategories,
getTopicsByCategoryId,
getTopicById,
getCommentsByTopicId,
insertComment,
getCategoryByPath,
insertTopic,
} = require('../controllers');
connect();
router.get('/forum/topic-categories', async (req, res) => {
const errors = [];
const categories = await getCategories().catch((e) => errors.push(e.message));
res.send(getResponse(errors, categories));
});
router.get('/forum/topic-categories/:groupId', async (req, res) => {
const errors = [];
const category = await getCategoryByPath(req.params.groupId).catch((e) => errors.push(e.message));
res.send(getResponse(errors, category));
});
router.get('/forum/topic-comments/:topicId', async (req, res) => {
const errors = [];
const comments = await getCommentsByTopicId(req.params.topicId, req.query.page).catch((e) => errors.push(e.message));
res.send(getResponse(errors, comments));
});
router.post('/forum/topic-comments', async (req, res) => {
const errors = [];
if (!req.body) {
errors.push('Bad request, no body');
res.send(getResponse(errors, undefined));
} else {
const comment = await insertComment(req.body).catch((e) => errors.push(e.message));
res.send(getResponse(errors, comment));
}
});
router.get('/forum/topic-list/:id', async (req, res) => {
const errors = [];
const topics = await getTopicsByCategoryId(req.params.id, req.query.page).catch((e) => errors.push(e.message));
res.send(getResponse(errors, topics));
});
router.get('/forum/topic/:id', async (req, res) => {
const errors = [];
const topic = await getTopicById(req.params.id).catch((e) => errors.push(e.message));
res.send(getResponse(errors, topic));
});
router.post('/forum/topic', async (req, res) => {
const errors = [];
if (!req.body) {
errors.push('Bad request, no body');
res.send(getResponse(errors, undefined));
} else {
const topic = await insertTopic(req.body).catch((e) => errors.push(e.message));
res.send(getResponse(errors, topic));
}
});
router.get('/forum/topic-tags', async (req, res) => {
const errors = [];
if (req.query.search !== undefined) {
const tags = await findTags(req.query.search).catch((e) => errors.push(e.message));
res.send(getResponse(errors, tags));
} else {
const tags = await getTags().catch((e) => errors.push(e.message));
res.send(getResponse(errors, tags));
}
});
router.post('/forum/topic-tags', async (req, res) => {
const errors = [];
const tags = await insertTag(req.body?.name).catch((e) => errors.push(e.message));
res.send(getResponse(errors, tags));
});
router.get('/forum/stub/:data', (request, response) => {
console.log(request.params);
process.env.stub = request.params.data;
response.sendStatus(200);
});
module.exports = router;