refactor: restructure API routes from v1/v2/v3 to domain-based (skydive/cms/herowars)

This commit is contained in:
2026-04-24 00:47:58 +02:00
parent b99842f458
commit 9f73ed07ba
36 changed files with 2416 additions and 50 deletions
+25
View File
@@ -0,0 +1,25 @@
const express = require('express');
const {
articlesFeed,
createArticle,
deleteArticle,
getArticle,
getArticles,
updateArticle,
addFavoriteArticle,
deleteFavoriteArticle
} = require('../../../controllers/articles.controller');
const auth = require('../../../middlewares/auth');
const articleRouter = express.Router();
articleRouter.get('/', auth.optional, getArticles);
articleRouter.post('/', auth.required, createArticle);
articleRouter.get('/feed', auth.required, articlesFeed);
articleRouter.get('/:slug', auth.optional, getArticle);
articleRouter.put('/:slug', auth.required, updateArticle);
articleRouter.delete('/:slug', auth.required, deleteArticle);
articleRouter.post('/:slug/favorite', auth.required, addFavoriteArticle);
articleRouter.delete('/:slug/favorite', auth.required, deleteFavoriteArticle);
module.exports = articleRouter;
+10
View File
@@ -0,0 +1,10 @@
const express = require('express');
const { createComment, getAllComments } = require('../../../controllers/comments.controller');
const auth = require('../../../middlewares/auth');
const commentRouter = express.Router();
commentRouter.post('/', auth.required, createComment);
commentRouter.get('/', auth.optional, getAllComments);
module.exports = commentRouter;
+23
View File
@@ -0,0 +1,23 @@
var routes = require('express').Router();
routes.use('/user', require('./user.routes'));
routes.use('/articles', require('./articles.routes'));
routes.use('/comments', require('./comments.routes'));
routes.use('/product', require('./product.routes'));
routes.use('/products', require('./products.routes'));
routes.use('/profiles', require('./profiles.routes'));
routes.use('/tags', require('./tags.routes'));
routes.use(function (err, req, res, next) {
if (err.name === 'ValidationError') {
return res.status(422).json({
errors: Object.keys(err.errors).reduce(function (errors, key) {
errors[key] = err.errors[key].message;
return errors;
}, {})
});
}
return next(err);
});
module.exports = routes;
+23
View File
@@ -0,0 +1,23 @@
const express = require('express');
const {
getProduct,
getProducts,
createProduct,
addFavoriteProduct,
deleteFavoriteProduct,
deleteProduct,
updateProduct,
} = require('../../../controllers/product.controller');
const auth = require('../../../middlewares/auth');
const productRouter = express.Router();
productRouter.get('/', auth.optional, getProducts);
productRouter.post('/', auth.required, createProduct);
productRouter.get('/:slug', auth.optional, getProduct);
productRouter.put('/:slug', auth.required, updateProduct);
productRouter.delete('/:slug', auth.required, deleteProduct);
productRouter.post('/:slug/favorite', auth.required, addFavoriteProduct);
productRouter.delete('/:slug/favorite', auth.required, deleteFavoriteProduct);
module.exports = productRouter;
+15
View File
@@ -0,0 +1,15 @@
const express = require('express');
const {
getProducts,
getProductsByCategory,
productsFeed
} = require('../../../controllers/products.controller');
const auth = require('../../../middlewares/auth');
const productsRouter = express.Router();
productsRouter.get('/', auth.optional, getProducts);
productsRouter.get('/feed', auth.required, productsFeed);
productsRouter.get('/:category', auth.optional, getProductsByCategory);
module.exports = productsRouter;
+12
View File
@@ -0,0 +1,12 @@
const express = require('express');
const {addFollowUser, deleteFollowUser, getParamUsername, getProfile} = require('../../../controllers/profiles.controller');
const auth = require('../../../middlewares/auth');
const profilesRouter = express.Router();
profilesRouter.param('username', getParamUsername);
profilesRouter.get('/:username', auth.required, getProfile);
profilesRouter.post('/:username/follow', auth.required, addFollowUser);
profilesRouter.delete('/:username/follow', auth.required, deleteFollowUser);
module.exports = profilesRouter;
+11
View File
@@ -0,0 +1,11 @@
const express = require('express');
const { createTag, deleteTag, getAllTags } = require('../../../controllers/tags.controller');
const auth = require('../../../middlewares/auth');
const tagRouter = express.Router();
tagRouter.post('/', auth.required, createTag);
tagRouter.get('/', auth.optional, getAllTags);
tagRouter.delete('/:name', auth.required, deleteTag);
module.exports = tagRouter;
+22
View File
@@ -0,0 +1,22 @@
const express = require('express');
const {
authenticate, createUser, getUser, loginAsUser,
updateUser, updateUserEmail, updateUserPassword, updateUserRole, updateUserUsername
} = require('../../../controllers/user.controller');
const auth = require('../../../middlewares/auth');
const userRouter = express.Router();
userRouter.get('/', auth.required, getUser);
userRouter.put('/', auth.required, updateUser);
userRouter.post('/', auth.optional, createUser);
userRouter.get('/authenticate', auth.optional, authenticate);
userRouter.post('/login', auth.optional, loginAsUser);
//userRouter.post('/register', auth.optional, createUser);
//userRouter.get('/users', auth.required, getAllUsers);
userRouter.put('/update/email', auth.required, updateUserEmail);
userRouter.put('/update/password', auth.required, updateUserPassword);
userRouter.put('/update/role', auth.required, updateUserRole);
userRouter.put('/update/username', auth.required, updateUserUsername);
module.exports = userRouter;