diff --git a/routes/api/articles.js b/routes/api/articles.js new file mode 100644 index 0000000..e683e16 --- /dev/null +++ b/routes/api/articles.js @@ -0,0 +1,30 @@ +const express = require("express"); +const router = express.Router(); +const { + getArticle, + getArticles, + createArticle, + articlesFeed, + addFavoriteArticle, + deleteFavoriteArticle, + deleteArticle, + updateArticle, +} = require("../../controllers/articles"); +const { protect } = require("../../middlewares/auth"); + +router + .route("/articles") + .get(protect, getArticles) + .post(protect, createArticle); +router.route("/articles/feed").get(protect, articlesFeed); +router + .route("/articles/:slug") + .get(protect, getArticle) + .put(protect, updateArticle) + .delete(protect, deleteArticle); +router + .route("/articles/:slug/favorite") + .post(protect, addFavoriteArticle) + .delete(protect, deleteFavoriteArticle); + +module.exports = router; diff --git a/routes/api/comments.js b/routes/api/comments.js new file mode 100644 index 0000000..15375f8 --- /dev/null +++ b/routes/api/comments.js @@ -0,0 +1,23 @@ +const express = require("express"); +const router = express.Router(); + +const { + getComment, + getComments, + createComment, + deleteComment, +} = require("../../controllers/comments"); + +const { protect } = require("../../middlewares/auth"); + +router + .route("/articles/:slug/comments") + .get(protect, getComments) + .post(protect, createComment); + +router + .route("/articles/:slug/comments/:id") + .get(protect, getComment) + .delete(protect, deleteComment); + +module.exports = router; diff --git a/routes/api/index.js b/routes/api/index.js new file mode 100644 index 0000000..94e95d9 --- /dev/null +++ b/routes/api/index.js @@ -0,0 +1,22 @@ +var router = require('express').Router(); + +router.use('/', require('./profiles')); +router.use('/articles', require('./articles')); +router.use('/comments', require('./comments')); +router.use('/tags', require('./tags')); +router.use('/profiles', require('./profiles')); +router.use('/users', require('./users')); + +router.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 = router; \ No newline at end of file diff --git a/routes/api/profiles.js b/routes/api/profiles.js new file mode 100644 index 0000000..965d179 --- /dev/null +++ b/routes/api/profiles.js @@ -0,0 +1,16 @@ +const express = require("express"); +const router = express.Router(); +const { + getProfile, + followUser, + unfollowUser, +} = require("../../controllers/profiles"); +const { protect } = require("../../middlewares/auth"); + +router.route("/profiles/:username").get(protect, getProfile); +router + .route("/profiles/:username/follow") + .post(protect, followUser) + .delete(protect, unfollowUser); + +module.exports = router; diff --git a/routes/api/tags.js b/routes/api/tags.js new file mode 100644 index 0000000..78641a5 --- /dev/null +++ b/routes/api/tags.js @@ -0,0 +1,8 @@ +const express = require("express"); +const router = express.Router(); + +const { getTags } = require("../../controllers/tags"); + +router.route("/tags/").get(getTags); + +module.exports = router; diff --git a/routes/api/users.js b/routes/api/users.js new file mode 100644 index 0000000..9077cf4 --- /dev/null +++ b/routes/api/users.js @@ -0,0 +1,16 @@ +const express = require("express"); +const router = express.Router(); +const { + createUser, + loginUser, + getCurrentUser, + updateUser, +} = require("../../controllers/users"); +const { protect } = require("../../middlewares/auth"); + +router.post("/users", createUser); +router.post("/users/login", loginUser); + +router.route("/user").get(protect, getCurrentUser).put(protect, updateUser); + +module.exports = router; diff --git a/routes/index.js b/routes/index.js new file mode 100644 index 0000000..470acba --- /dev/null +++ b/routes/index.js @@ -0,0 +1,4 @@ +var router = require('express').Router(); +router.use('/api', require('./api')); + +module.exports = router; diff --git a/routes/utils.js b/routes/utils.js new file mode 100644 index 0000000..c676188 --- /dev/null +++ b/routes/utils.js @@ -0,0 +1,30 @@ +const utils = { + getDateString: () => { + let today = new Date(); + let dateNow = today.toLocaleDateString(); + return `${dateNow}`; + }, + getTimeString: () => { + let today = new Date(); + let timeNow = today.toLocaleTimeString(); + return `${timeNow}`; + }, + getDateTimeString: (delimiter = true) => { + let today = new Date(); + let dateString = `${today.toLocaleDateString()} ${today.toLocaleTimeString()}`; + if (delimiter) { + dateString = `[${dateString}]`; + } + return dateString; + }, + getDateTimeISOString: (delimiter = true) => { + let today = new Date(); + let dateString = today.toISOString(); + if (delimiter) { + dateString = `[${dateString}]`; + } + return dateString; + } +}; + +module.exports = utils;