diff --git a/backend/populate.js b/backend/populate.js new file mode 100644 index 0000000000000000000000000000000000000000..4c5284a84da35e2b391dacd5294696bc00e22ff9 --- /dev/null +++ b/backend/populate.js @@ -0,0 +1,85 @@ +const mongoose = require("mongoose"); +const MovieModel = require("./models/movie"); +const axios = require("axios"); + +async function fetchMoviesFromTheMovieDatabase(n) { + // TODO: fetch movies from the The Movie Database API + try { + // Do something if call succeeded + const movieFetch = await axios.get( + `https://api.themoviedb.org/3/movie/popular?api_key=522d421671cf75c2cba341597d86403a&page=` + + n + ); + // console.log(movieFetch.data.results); + return movieFetch.data.results; + } catch (error) { + // Do something if call failed + console.error(error); + } +} + +async function populateMovies(movies) { + // TODO: populate movies into the database + try { + for (const movie of movies) { + const newMovie = await new MovieModel({ + // Movie attributes + adult: movie.adult, + backdrop_path: movie.backdrop_path, + genre_ids: movie.genre_ids, + id: movie.id, + original_language: movie.original_language, + original_title: movie.original_title, + overview: movie.overview, + popularity: movie.popularity, + poster_path: movie.poster_path, + release_date: movie.release_date, + title: movie.title, + video: movie.video, + vote_average: movie.vote_average, + vote_count: movie.vote_count, + }); + + // Create a new movie instance + const createdMovie = await newMovie.save(); + + // What to do after movie has been saved ! + console.log("Movie Saved !"); + console.log(createdMovie.title); + } + } catch (error) { + console.log(error); + } +} + +async function dropDataBase() { + // TODO: Drop the collections + try { + await MovieModel.deleteMany({}); + } catch (error) { + console.log(error); + } +} + +async function populate(N) { + // Connect mongoose client + const client = await mongoose.connect(process.env.MONGO_DB_URL); + await dropDataBase(); + + for (let n = 1; n < N; n++) { + const movies = await fetchMoviesFromTheMovieDatabase(n); + await populateMovies(movies); + console.log(n); + } + + // disconnect mongoose client + await client.disconnect(); +} + +populate(300) + .then(() => { + console.log("All done !"); + }) + .catch((error) => { + console.error(error); + });