Select Git revision
users.js 3.61 KiB
const express = require("express");
const UserModel = require("../models/user");
const MovieModel = require("../models/movie");
const router = express.Router();
router.get("/", function (req, res) {
UserModel.find({}).then(function (users) {
res.json({ users: users });
});
});
router.get("/likedMovies/:userId", async function (req, res) {
const userId = await req.params["userId"];
const userPopulated = await UserModel.findById(userId).populate(
"liked_movies"
);
res.send(userPopulated.liked_movies);
});
router.get("/isliked/:movieId/:userId", async function (req, res) {
const userId = await req.params["userId"];
console.log(userId);
const movieId = await req.params["movieId"];
const user = await UserModel.findById(userId);
const movieOid = await MovieModel.findOne({ id: movieId });
const likedMovies = user.liked_movies;
const myIndex = likedMovies.indexOf(movieOid._id) + 1;
console.log(Boolean(myIndex));
res.send(Boolean(myIndex));
});
router.post("/new", function (req, res) {
const newUser = new UserModel({
email: req.body.email,
firstName: req.body.firstName,
lastName: req.body.lastName,
});
newUser
.save()
.then(function (newDocument) {
res.status(201).json(newDocument);
})
.catch(function (error) {
console.error(error);
if (error.code === 11000) {
res.status(400).json({
message: `User with email "${newUser.email}" already exists`,
});
} else {
res.status(500).json({ message: "Error while creating the user" });
}
});
});
router.put("/like", async function (req, res) {
try {
const userId = await req.body.userId;
const movieId = await req.body.movieId;
const movieOid = await MovieModel.findOne({ id: movieId });
const user = await UserModel.findById(userId);
const likedMovies = user.liked_movies;
const myIndex = likedMovies.indexOf(movieOid._id);
if (myIndex == -1) {
likedMovies.splice(myIndex, 1);
await UserModel.findByIdAndUpdate(userId, {
liked_movies: likedMovies.concat([movieOid._id]),
});
console.log(movieOid.title);
console.log(movieOid._id);
res.send("Done");
} else {
console.log(movieOid.title);
console.log(movieOid._id);
console.log("This movie is already liked");
res.send("This movie is already liked");
}
} catch (error) {
console.log(error);
res.send("Internal problem");
}
});
router.put("/unlike", async function (req, res) {
try {
const userId = await req.body.userId;
const movieId = await req.body.movieId;
const movieOid = await MovieModel.findOne({ id: movieId });
const user = await UserModel.findById(userId);
const likedMovies = user.liked_movies;
const myIndex = likedMovies.indexOf(movieOid._id);
if (myIndex !== -1) {
likedMovies.splice(myIndex, 1);
await UserModel.findByIdAndUpdate(userId, {
liked_movies: likedMovies,
});
res.send("Done");
console.log(movieOid.title);
console.log(movieOid._id);
} else {
res.send("This movie wasn't liked");
console.log(movieOid.title);
console.log(movieOid._id);
console.log("This movie wasn't liked");
}
} catch (error) {
console.log(error);
res.send("Internal problem");
}
});
router.delete("/:userId", function (req, res) {
UserModel.deleteOne({ _id: req.params.userId })
.then(function () {
res.status(204).json({ message: "User successfully deleted" });
})
.catch(function () {
res.status(500).json({ message: "Error while deleting the user" });
});
});
module.exports = router;