refactor: restructure API routes from v1/v2/v3 to domain-based (skydive/cms/herowars)
This commit is contained in:
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user