var MovieModel = require('../models/movieModel'); var UserModel = require('../models/userModel'); /** * movieController.js * * @description :: Server-side logic for managing movies. */ module.exports = { /** * movieController.list() */ list: function (req, res) { MovieModel.find({}, { _id: 0, __v: 0 }) .then(movies => { return res.json(movies); }) .catch(err => { return res.status(500).json({ message: 'Error when getting movies.', error: err }); }); }, /** * movieController.create() */ create: async function (req, res) { const movieCode = req.body.code; const passp = req.body.pass; try { const userFound = await UserModel.findOne({ pass: passp }); if (!userFound) { return res.status(404).json({ message: 'Wrong password' }); } const movieFound = await MovieModel.findOne({ code: movieCode }); if (movieFound) { return res.status(409).json({ message: 'Movie already exists' }); } const uri = `http://www.omdbapi.com/?i=${movieCode}&apikey=${userFound.key}`; const mJson = await fetch(uri); const mData = await mJson.json(); if (mData.Response == 'False') { return res.status(404).json({ message: 'wrong code' }); } const movie = new MovieModel({ code: movieCode, title: mData.Title, released: mData.Released, webImg: mData.Poster, }); const savedMovie = await movie.save(); return res.status(201).json(movie); } catch (err) { return res.status(500).json({ message: 'Error when creating movie' }); } }, /** * movieController.delete() */ remove: async function (req, res) { var id = req.body.code; const passp = req.body.pass; try { const userFound = await UserModel.findOne({ pass: passp }); if (!userFound) { return res.status(404).json({ message: 'Wrong password' }); } const movie = await MovieModel.findOneAndDelete({ code: id }); if (!movie) { return res.status(404).json({ message: 'No such movie' }); } return res.status(204).json(); } catch (err) { return res.status(500).json({ message: 'Error when deleting the movie.' }); } }, };