Skip to content
Snippets Groups Projects
Commit 049f0ebc authored by Bilel El Yaagoubi's avatar Bilel El Yaagoubi
Browse files

Merge branch 'reco' into 'master'

show reco

See merge request !26
parents 1d8d1eb0 633ebab1
No related branches found
No related tags found
1 merge request!26show reco
Pipeline #42659 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");
const usersRouter = require("./routes/users");
const moviesRouter = require("./routes/movies");
const genresRouter = require("./routes/genres");
const recoRouter = require("./routes/recommendations");
const routeNotFoundJsonHandler = require("./services/routeNotFoundJsonHandler");
const jsonErrorHandler = require("./services/jsonErrorHandler");
......@@ -24,6 +25,7 @@ app.use("/users", usersRouter);
app.use("/movies", moviesRouter);
app.use("/genres", genresRouter);
app.use("/reco", recoRouter);
// Register 404 middleware and error handler
app.use(routeNotFoundJsonHandler); // this middleware must be registered after all routes to handle 404 correctly
......
......@@ -23,14 +23,14 @@
<MovieType />
</div>
<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">
<h5 class="center"> {{ movie.title }}</h5>
<h5 class="center"> {{ reco.title }}</h5>
</p>
<p class="film">
<router-link :to="'/movie/'+ movie.id">
<router-link :to="'/movie/'+ reco.id">
<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"
height="300"
/>
......@@ -63,7 +63,9 @@ export default {
return {
moviename: "",
movies: [],
recos: [],
moviesLoadingError: "",
userId:""
};
},
methods: {
......@@ -80,6 +82,21 @@ export default {
this.moviesLoadingError = "An error occured while e ing movies.";
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 () {
axios
......@@ -97,8 +114,11 @@ export default {
},
},
created() {
this.userId = this.$route.query.uid
this.fetchMovies();
this.fetchGenres();
this.fetchRecos();
console.log(this.userId)
},
};
</script>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment