Skip to content
Snippets Groups Projects
Commit 1d7baa7f authored by Tom Bray's avatar Tom Bray
Browse files

Merge branch 'master' of gitlab.viarezo.fr:octolel/cacaocritics

parents 6f54656b d5d55f46
Branches master
No related tags found
No related merge requests found
Pipeline #43038 passed with warnings
const mongoose = require("mongoose");
const { Schema } = mongoose;
const RecoSchema = new mongoose.Schema(
{
recommended_movies: [{ type: Schema.Types.ObjectId, ref: "MovieModel" }],
user: [{ type: Schema.Types.ObjectId, ref: "UserModel" }],
},
{
toJSON: { virtuals: true }, // So `res.json()` and other `JSON.stringify()` functions include virtuals
toObject: { virtuals: true }, // So `console.log()` and other functions that use `toObject()` include virtuals
}
);
const RecoModel = mongoose.model("RecoModel", RecoSchema, "recommendations");
module.exports = RecoModel;
const express = require("express");
const RecoModel = require("../models/recommendation");
const router = express.Router();
// router.get("/", function (req, res) {
// RecoModel.find({}).then(function (users) {
// res.json();
// });
// });
router.get("/:userId", async function (req, res) {
const userId = await req.params["userId"];
console.log(userId);
const userPopulated = await RecoModel.findOne({ user_id: userId }).populate(
"recommended_movies"
);
res.send(userPopulated.recommended_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;
...@@ -6,6 +6,7 @@ const indexRouter = require("./routes/index"); ...@@ -6,6 +6,7 @@ const indexRouter = require("./routes/index");
const usersRouter = require("./routes/users"); const usersRouter = require("./routes/users");
const moviesRouter = require("./routes/movies"); const moviesRouter = require("./routes/movies");
const genresRouter = require("./routes/genres"); const genresRouter = require("./routes/genres");
const recoRouter = require("./routes/recommendations");
const routeNotFoundJsonHandler = require("./services/routeNotFoundJsonHandler"); const routeNotFoundJsonHandler = require("./services/routeNotFoundJsonHandler");
const jsonErrorHandler = require("./services/jsonErrorHandler"); const jsonErrorHandler = require("./services/jsonErrorHandler");
...@@ -24,6 +25,7 @@ app.use("/users", usersRouter); ...@@ -24,6 +25,7 @@ app.use("/users", usersRouter);
app.use("/movies", moviesRouter); app.use("/movies", moviesRouter);
app.use("/genres", genresRouter); app.use("/genres", genresRouter);
app.use("/reco", recoRouter);
// Register 404 middleware and error handler // Register 404 middleware and error handler
app.use(routeNotFoundJsonHandler); // this middleware must be registered after all routes to handle 404 correctly app.use(routeNotFoundJsonHandler); // this middleware must be registered after all routes to handle 404 correctly
......
...@@ -23,14 +23,14 @@ ...@@ -23,14 +23,14 @@
<MovieType /> <MovieType />
</div> </div>
<div class="movie-affichage"> <div class="movie-affichage">
<li v-for="movie in movies" :key="movie.id"> <li v-for="reco in recos" :key="reco.id">
<p class="name"> <p class="name">
<h5 class="center"> {{ movie.title }}</h5> <h5 class="center"> {{ reco.title }}</h5>
</p> </p>
<p class="film"> <p class="film">
<router-link :to="'/movie/'+ movie.id"> <router-link :to="'/movie/'+ reco.id">
<img <img
:src="'https://image.tmdb.org/t/p/original/' + movie.poster_path" :src="'https://image.tmdb.org/t/p/original/' + reco.poster_path"
withd="100" withd="100"
height="300" height="300"
/> />
...@@ -63,7 +63,9 @@ export default { ...@@ -63,7 +63,9 @@ export default {
return { return {
moviename: "", moviename: "",
movies: [], movies: [],
recos: [],
moviesLoadingError: "", moviesLoadingError: "",
userId:""
}; };
}, },
methods: { methods: {
...@@ -80,6 +82,21 @@ export default { ...@@ -80,6 +82,21 @@ export default {
this.moviesLoadingError = "An error occured while e ing movies."; this.moviesLoadingError = "An error occured while e ing movies.";
console.error(error); console.error(error);
}); });
},
fetchRecos: function () {
axios
.get(
backendURL + "/reco/" + this.userId,
)
.then((response) => {
console.log(backendURL + "/reco/" + this.userId)
this.recos = response.data;
console.log(response.data)
})
.catch((error) => {
this.moviesLoadingError = "An error occured while e ing movies.";
console.error(error);
});
}, },
fetchGenres: function () { fetchGenres: function () {
axios axios
...@@ -97,8 +114,11 @@ export default { ...@@ -97,8 +114,11 @@ export default {
}, },
}, },
created() { created() {
this.userId = this.$route.query.uid
this.fetchMovies(); this.fetchMovies();
this.fetchGenres(); this.fetchGenres();
this.fetchRecos();
console.log(this.userId)
}, },
}; };
</script> </script>
......
...@@ -14,11 +14,12 @@ ...@@ -14,11 +14,12 @@
<div class="likeList"> <div class="likeList">
<div v-for="movie in likedFilms" :key="movie.id"> <div v-for="movie in likedFilms" :key="movie.id">
<p class="film"> <p class="film">
<img <router-link :to="'/movie/'+ movie.id + '?uid=' + userId"><img
:src="'https://image.tmdb.org/t/p/original/' + movie.poster_path" :src="'https://image.tmdb.org/t/p/original/' + movie.poster_path"
withd="100" withd="100"
height="300" height="300"
/> />
</router-link>
</p> </p>
</div> </div>
</div> </div>
...@@ -32,6 +33,7 @@ export default { ...@@ -32,6 +33,7 @@ export default {
data: function () { data: function () {
return { return {
likedFilms: [], likedFilms: [],
userId: "",
}; };
}, },
methods: { methods: {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment