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

hop

parent 0704cf05
No related branches found
No related tags found
1 merge request!5Draft: Front bilel
Pipeline #42477 failed
const mongoose = require("mongoose");
const { Schema } = mongoose;
const MovieSchema = new mongoose.Schema({
const MovieSchema = new mongoose.Schema(
{
adult: { type: Boolean },
backdrop_path: { type: String },
genre_ids: [Number],
......@@ -9,13 +9,36 @@ const MovieSchema = new mongoose.Schema({
original_language: { type: String },
original_title: { type: String },
overview: { type: String },
popularity: { type: String },
popularity: { type: Number },
poster_path: { type: String },
release_date: { type: String },
release_date: { type: Date },
title: { type: String },
video: { type: Boolean },
vote_average: { type: String },
vote_average: { type: Number },
vote_count: { type: Number },
},
{
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
}
);
MovieSchema.virtual("liking_users", {
ref: "UserModel",
localField: "_id", // The user _id should match the viewers field in movies
foreignField: "liked_movies",
});
MovieSchema.virtual("later_watchers", {
ref: "UserModel",
localField: "_id", // The user _id should match the viewers field in movies
foreignField: "to_see_later",
});
MovieSchema.virtual("masking_users", {
ref: "UserModel",
localField: "_id", // The user _id should match the viewers field in movies
foreignField: "masked_movies",
});
const MovieModel = mongoose.model(
......
const mongoose = require("mongoose");
const { Schema } = mongoose;
const UserSchema = new mongoose.Schema(
{
email: { type: String, required: true, unique: true },
firstName: { type: String },
lastName: { type: String },
is_admin: { type: Boolean },
liked_movies: [{ type: Schema.Types.ObjectId, ref: "MovieModel" }],
to_see_later: [{ type: Schema.Types.ObjectId, ref: "MovieModel" }],
masked_movies: [{ type: Schema.Types.ObjectId, ref: "MovieModel" }],
},
{
toJSON: { virtuals: true }, // So `res.json()` and other `JSON.stringify()` functions include virtuals
......@@ -12,12 +17,6 @@ const UserSchema = new mongoose.Schema(
}
);
UserSchema.virtual("watchedMovies", {
ref: "MovieModel",
localField: "_id", // The user _id should match the viewers field in movies
foreignField: "viewers",
});
const UserModel = mongoose.model("UserModel", UserSchema, "users");
module.exports = UserModel;
......@@ -61,12 +61,12 @@ async function dropDataBase() {
}
}
async function populate() {
async function populate(N) {
// Connect mongoose client
const client = await mongoose.connect(process.env.MONGO_DB_URL);
await dropDataBase();
for (let n = 1; n < 300; n++) {
for (let n = 1; n < N; n++) {
const movies = await fetchMoviesFromTheMovieDatabase(n);
await populateMovies(movies);
console.log(n);
......@@ -76,7 +76,7 @@ async function populate() {
// await client.disconnect();
}
populate(2)
populate(N)
.then(() => {
console.log("All done !");
})
......
......@@ -4,9 +4,22 @@ const router = express.Router();
module.exports = router;
router.get("/", async function (req, res) {
router.get("/popular/:number", async function (req, res) {
try {
const getMovies = await MovieModel.find({}).populate("viewers");
const filmNumber = await req.params["number"];
const getMovies = await MovieModel.find({})
.sort({ popularity: "desc" })
.limit(filmNumber);
res.send(getMovies);
} catch (error) {
console.log(error);
}
});
router.get("/id/:id", async function (req, res) {
try {
const movieId = await req.params["id"];
const getMovies = await MovieModel.findOne({ id: movieId });
res.send(getMovies);
} catch (error) {
console.log(error);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment