import {Router} from 'express'; import {addLogger} from "../middlewares/logger.middleware.js"; import {isTokenValid} from "../middlewares/jwt.middleware.js"; import {doPlaylistExists, Playlist, isOwner, isVideoInPlaylist} from "../middlewares/playlist.middleware.js"; import validator from "../middlewares/error.middleware.js"; import {addVideo, create, del, deleteVideo, getById, getByUser, update, getSeeLater} from "../controllers/playlist.controller.js"; import {doVideoExists, Video} from "../middlewares/video.middleware.js"; import {doUserExists, User, isOwner as isOwnerUser} from "../middlewares/user.middleware.js"; const router = new Router(); // CREATE PLAYLIST router.post("/", [addLogger, isTokenValid, Playlist.name, validator], create); // GET SEE LATER PLAYLIST router.get("/see-later", [addLogger, isTokenValid], getSeeLater); // ADD VIDEO TO PLAYLIST router.post("/:id", [addLogger, isTokenValid, Playlist.id, Video.idBody, validator, doPlaylistExists, isOwner, doVideoExists], addVideo); // GET BY USER router.get("/user/:id", [addLogger, isTokenValid, User.id, validator, doUserExists, isOwnerUser], getByUser); // GET BY ID router.get("/:id", [addLogger, isTokenValid, Playlist.id, validator, doPlaylistExists, isOwner], getById); // UPDATE router.put("/:id", [addLogger, isTokenValid, Playlist.id, Playlist.name, validator, doPlaylistExists, isOwner], update); // DELETE VIDEO router.delete("/:id/video/:videoId", [addLogger, isTokenValid, Video.id, Playlist.videoId, validator, doPlaylistExists, isOwner, isVideoInPlaylist], deleteVideo); // DELETE PLAYLIST router.delete("/:id", [addLogger, isTokenValid, Playlist.id, validator, doPlaylistExists, isOwner], del); export default router;