TODO: change api.conf URL references to use environment variables and add these variables to the docker-compose configuration for host domain
176 lines
3.9 KiB
JavaScript
176 lines
3.9 KiB
JavaScript
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."
|
|
});
|
|
});
|
|
}; |