Mpoknimu/controllers/episodes.js

108 lines
3.1 KiB
JavaScript

const Episode = require("../models/episodes");
const Serie = require("../models/series");
module.exports = {
index: async (req, res, next) => {
try {
// Get all the episodes
const episode = await Episode.find({})
.lean()
.sort({ createdAt: -1 })
.limit(9); // the correct order is -1
//res.render("index", { episode: episode });
//res.render('index', { name: 'John' });
res.json(episode);
} catch (err) {
next(err);
}
},
newEpisode: async (req, res, next) => {
try {
// 1. Find the actual anime
const anime = await Serie.findById(req.body.anime);
// 2. Create a new episode
const newEpisode = req.body;
delete newEpisode.anime;
const episode = new Episode(newEpisode);
episode.anime = anime;
//anime.markModified('episode.anime');
await episode.save();
// 3. Add newly created episode to the actual anime
anime.episodes.push(episode);
//episode.markModified('anime.episodes');
//anime.markModified('anime.serie');
await anime.save();
// We're done!
res.json(episode);
// res.redirect("/");
} catch (err) {
next(err);
}
},
getEpisode: async (req, res, next) => {
try {
const episode = await Episode.findOne({ slug: req.params.slug });
if (!episode) return next();
res.json(episode)
//res.render("show", { episode: episode });
} catch (err) {
next(err);
}
},
/* getEpisode: async (req, res, next) => {
const episode = await Episode.findById(req.params.episodeId);
res.render('show', { episode: episode });
//res.json(episode);
}, */
replaceEpisode: async (req, res, next) => {
try {
const { episodeId } = req.params;
const newEpisode = req.body;
const result = await Episode.findByIdAndUpdate(episodeId, newEpisode);
res.json({ success: true });
} catch (err) {
next(err);
}
},
updateEpisode: async (req, res, next) => {
try {
const { episodeId } = req.params;
const newEpisode = req.body;
const result = await Episode.findByIdAndUpdate(episodeId, newEpisode);
//res.json({ success: true });
res.redirect("/");
} catch (err) {
next(err);
}
},
deleteEpisode: async (req, res, next) => {
try {
const { episodeId } = req.params;
// Get a episode
const episode = await Episode.findById(episodeId);
if (!episode) {
return res.status(404).json({ error: "Episode no existe" });
}
const animeId = episode.anime;
// Get a anime
const anime = await Serie.findById(animeId);
// Remove the episode
await episode.remove();
// Remove episode from the anime's selling list
console.log("anime", anime);
anime.episodes.pull(episode);
console.log("anime", anime);
await anime.save();
res.json({ success: true });
} catch (err) {
next(err);
}
}
};