@Kushagra_Kesav below are the snipppet for all of them accordingly
import express from "express";
import userRoute from "./user . route. js";
import mediaRoute from "./media.route. js";
import personRoute from "./person.route. js";
import reviewRoute from "./review. route. js";
const router = express. Router( );
router .use("/user", userRoute);
router .use("/person", personRoute) ;
router .use("/reviews", reviewRoute);
2)user.route.js
Import express from "express"
import [body) from"express-validator"
import favoriteController from " .. /controllers/favorite. controller. js"
import userController from " .. /controllers/user. controller.js"
import requestHandler from " .. /handlers/request. handler.js"
import userModel from " .. /models/user.model.js"
import tokenMiddleware from " .. /middlewares/token.middleware. js"
const router = express.Router();
router .post (
"/signup",
body ("username")
exists() .withMessage("username is required")
.isLength([ min: 8 }) .withMessage("username minimum 8 characters")
.custom(async value => {
const user - await userModel.findone(( username: value });
if (user) return Promise.reject("username already used");
});
body("password")
.exists/1.withMessage("password is required")
.isLength({ min: 8 } ) .withMessage( "password minimum 8 characters"),
body ("confirmPassword")
.exists().withMessage("confirmPassword is required")
.isLength({ min: 8 }) .withMessage("confirmPassword minimum 8 characters")
.custom((value, { req }) -> {
if (value ! == req.body .password) throw new Error("confirmPassword not match");
return true;
}),
body("displayName")
.exists() .withMessage("displayName is required")
.isLength({ min: 8 }) .withMessage("displayName minimum 8 characters"),
requestHandler . validate,
userController .signup
),
router .post (
"/signin",
body("username")
.exists() .withMessage("username is required")
.isLength({ min: 8 }) .withMessage("username minimum 8 characters"),
body ("password")
.exists() .withMessage("password is required")
.isLength({ min: 8 }) . withMessage("password minimum 8 characters"),
requestHandler .validate,
userController.signin
);
router.put(
"/update-password",
tokenMiddleware.auth,
body("password")
.exists() .withMessage("password is required")
.isLength({ min: 8 }) . withMessage( "password minimum 8 characters"),
body( "newPassword")
.exists() .withMessage("newPassword is required")
.isLength({ min: 8 }) . withMessage("newPassword minimum 8 characters"),
body("confirmNewPassword")
.exists() .withMessage("confirmNewPassword is required")
.isLength({ min: 8 }) . withMessage("confirmNewPassword minimum 8 characters")
.custom((value, { req }) => {
if (value ! == req. body . newPassword) throw new Error("confirmNewPassword not match");
return true;
}),
requestHandler . validate,
userController .updatePassword
),
router .get(
"/info",
tokenMiddleware.auth,
userController .getInfo,
);
router .get (
"/favorites",
tokenMiddleware.auth,
favoriteController.getFavoritesofUser
);
router . post (
"/favorites",
tokenMiddleware.auth,
body("mediatype")
.exists() .withMessage("mediatype is required")
.custom(type => ["movie", "tv"].includes(type)) .withMessage("mediaType invalid"),
body("mediaId")
.exists().withMessage("mediaId is required")
.isLength(( min: 1 )) .withMessage("mediaId can not be empty"),
body ( "mediaTitle")
.exists().withMessage("mediaTitle is required"),
body ( "mediaPoster")
.exists( ) .withMessage( "mediaPoster is required").
body ( "mediaRate")
.exists() .withMessage("mediaRate is required"),
favoriteController.addFavorite
);
router .delete(
"/ favorites/ : favoriteId",
tokenMiddleware. auth,
favoriteController.removeFavorite
);
export default router;
There might be a little mistake maybe some wrong punctuation marks or the spacing even the brackets I used but from the photos I sent b4 should guide u, though I cross-checked b4 sending