const db = require("../"); const Course = db.Course; const Op = db.Sequelize.Op; // Create and Save a new Course exports.create = (req, res) => { // Validate if (!req.body) { res.status(400).send({ message: "Body content can not be empty!" }); return; } // Create const courses = [] if (Array.isArray(req.body)) { courses.push(...req.body) } else { courses.push(req.body) } // Save const promises = [] courses.forEach(course => { promises.push(Course.create(course)) }); const successes = [] const failures = [] Promise.allSettled(promises) .then(data => { if (data.every(result => result.status === 'fulfilled')) { res.status(201).send({ message: "All courses were created successfully.", successes: data.map(result => result.value), failures: [], }) return; } data.forEach(result => { if (result.status === 'fulfilled') { successes.push(result.value) } else { failures.push(result.reason) } }) res.status(207).send({ message: "Some courses were created successfully.", successes: successes, failures: failures, }) }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while creating the Course.", }); }); }; // Retrieve all Courses from the database. exports.findAll = (req, res) => { const name = req.query.name; var condition = name ? { name: { [Op.like]: `%${name}%` } } : null; Course.findAll({ where: condition, include: ['trainingsHeld'] }) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while retrieving courses." }); }); }; // Find a single Course with an id exports.findOne = (req, res) => { const id = req.params.id; Course.findByPk(id) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: "Error retrieving Course with id=" + id }); }); }; // Update a Course by the id in the request exports.update = (req, res) => { const id = req.params.id; Course.update(req.body, { where: { id: id } }) .then(num => { if (num == 1) { res.send({ message: "Course was updated successfully." }); } else { res.send({ message: `Cannot update Course with id=${id}. Maybe Course was not found or req.body is empty!` }); } }) .catch(err => { res.status(500).send({ message: "Error updating Course with id=" + id }); }); }; // Delete a Course with the specified id in the request exports.delete = (req, res) => { const id = req.params.id; Course.destroy({ where: { id: id } }) .then(num => { if (num == 1) { res.send({ message: "Course was deleted successfully!" }); } else { res.send({ message: `Cannot delete Course with id=${id}. Maybe Course was not found!` }); } }) .catch(err => { res.status(500).send({ message: "Could not delete Course with id=" + id }); }); }; // Delete all Courses from the database. exports.deleteAll = (req, res) => { Course.destroy({ where: {}, truncate: false }) .then(nums => { res.send({ message: `${nums} Courses were deleted successfully!` }); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while removing all courses." }); }); }; // Find all published Courses exports.findAllPublished = (req, res) => { Course.findAll({ where: { published: true } }) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: err.message || "Some error occurred while retrieving courses." }); }); };