diff --git a/backend/routes/users.js b/backend/routes/users.js index 1d698d1810c8257e4c090288b24fe05e43376da3..58475b8f2603a2b3dbcfc8b6c231a0da226f7f5f 100644 --- a/backend/routes/users.js +++ b/backend/routes/users.js @@ -1,5 +1,6 @@ const express = require("express"); const UserModel = require("../models/user"); +const MovieModel = require("../models/movie"); const router = express.Router(); router.get("/", function (req, res) { @@ -32,6 +33,46 @@ router.post("/new", function (req, res) { }); }); +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.concat([movieOid._id]); + await UserModel.findByIdAndUpdate(userId, { + liked_movies: likedMovies, + }); + res.send("Done"); + } 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"); + } else { + res.send("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 () {