diff --git a/learn-sequelize.js b/learn-sequelize.js index d4b688f..2b6fc86 100644 --- a/learn-sequelize.js +++ b/learn-sequelize.js @@ -1,71 +1,79 @@ const { Genre, Movie, Actor } = require("./models"); -/* - Write a function that creates a new Genre in the database - - currently, the genre table has 3 entries: Action, Comedy, and Drama - - add one more Genre of your choice - - duplicate entries are not allowed (try it to learn about errors) -*/ -function insertNewGenre() { - // Add code here +async function insertNewGenre() { + try { + const newGenre = await Genre.create({ name: 'Horror' }); + console.log('New genre added:', newGenre); + } catch (error) { + console.error("Error adding genre:", error); + } } -/* - Write a function that creates a new Movie in the database - - currently, there are 5 movies - - add one more Movie of your choice. - - the movie CANNOT be from year 2008 (try it to learn about errors) -*/ -function insertNewMovie() { - // Add code here +async function insertNewMovie() { + try { + const newMovie = await Movie.create({ title: 'The Dark Knight', year: 2019 }); + console.log('New movie added:', newMovie); + } catch (error) { + console.error("Error adding movie:", error); + } } -/* - Write a function that returns the title of the movie with ID=2 -*/ -function getMovieWithId2() { - // Add code here +async function getMovieWithId2() { + try { + const movie = await Movie.findByPk(2); + return movie ? movie.title : 'Movie not found'; + } catch (error) { + console.error("Error fetching movie:", error); + } } -/* - Write a function that returns an array of all the actor names -*/ -function getAllActors() { - // Add code here +async function getAllActors() { + try { + const actors = await Actor.findAll(); + return actors.map(actor => actor.name); + } catch (error) { + console.error("Error fetching actors:", error); + } } -/* - Write a function that returns an array of all the movie titles from 2008 -*/ -function getAllMoviesFrom2008() { - // Add code here +async function getAllMoviesFrom2008() { + try { + const movies = await Movie.findAll({ where: { year: 2008 } }); + return movies.map(movie => movie.title); + } catch (error) { + console.error("Error fetching movies from 2008:", error); + } } -/* - Write a function that deletes the genre you added in the first function: insertNewGenre() -*/ -function deleteGenreYouAdded() { - // Add code here +async function deleteGenreYouAdded() { + try { + await Genre.destroy({ where: { name: 'Horror' } }); + console.log("Genre 'Horror' deleted successfully."); + } catch (error) { + console.error("Error deleting genre:", error); + } } -/* - Write a function that associates: - - the actor "Rosario Dawson" with the movie "Eagle Eye" - - the actor and movie record already exist in the database - - add the association record to the database -*/ -function associateRosarioToEagleEye() { - // Add code here +async function associateRosarioToEagleEye() { + try { + const actor = await Actor.findOne({ where: { name: 'Rosario Dawson' } }); + const movie = await Movie.findOne({ where: { title: 'Eagle Eye' } }); + await movie.addActor(actor); + console.log("Association added: Rosario Dawson -> Eagle Eye"); + } catch (error) { + console.error("Error associating actor with movie:", error); + } } -/* - Write a function that associates: - - the actor "Robert Downey Jr." with the movie "Tropic Thunder" - - the actor and movie record already exist in the database - - add the association record to the database -*/ async function associateRobertToTropicThunder() { - // Add code here + try { + const actor = await Actor.findOne({ where: { name: 'Robert Downey Jr.' } }); + const movie = await Movie.findOne({ where: { title: 'Tropic Thunder' } }); + await movie.addActor(actor); + console.log("Association added: Robert Downey Jr. -> Tropic Thunder"); + } catch (error) { + console.error("Error associating actor with movie:", error); + } } module.exports = {