import {Router} from "express"; import { register, login, getById, getByUsername, update, deleteUser, getChannel, getHistory } from "../controllers/user.controller.js"; import { UserRegister, doEmailExists, doUsernameExists, doUserExists, isOwner, UserLogin, User, UserRequest } from "../middlewares/user.middleware.js"; import validator from "../middlewares/error.middleware.js"; import {isTokenValid} from "../middlewares/jwt.middleware.js"; import {addLogger} from "../middlewares/logger.middleware.js"; import {profileUpload} from "../middlewares/file.middleware.js"; const router = Router(); // REGISTER A USER router.post("/", [profileUpload.single("profile"), addLogger, UserRegister.email, UserRegister.username, UserRegister.password, validator, doEmailExists, doUsernameExists], register); // LOGIN A USER router.post("/login", [addLogger, UserLogin.username, UserLogin.password, validator], login) // GET USER BY ID router.get("/:id", [addLogger, isTokenValid, User.id, validator], getById) // GET USER BY USERNAME router.get("/username/:username", [addLogger, isTokenValid, UserRequest.username, validator], getByUsername); // UPDATE USER router.put("/:id", [addLogger, isTokenValid, User.id, UserRegister.email, UserRegister.username, validator, doUserExists, isOwner], update); // DELETE USER router.delete("/:id", [addLogger, isTokenValid, User.id, validator, doUserExists, isOwner], deleteUser); // GET USER CHANNEL router.get("/:id/channel", [addLogger, isTokenValid, User.id, validator], getChannel); // GET USER HISTORY router.get("/:id/history", [addLogger, isTokenValid, User.id, validator], getHistory); export default router;