Files
17th-Battalion-Tracker/api/db/routes/Member.route.js
IndigoFox 9f2473801c Initial commit
TODO: change api.conf URL references to use environment variables and add these variables to the docker-compose configuration for host domain
2023-03-28 00:08:50 -07:00

231 lines
5.0 KiB
JavaScript

const member = require("../controllers/Member.controller.js");
const db = require("..");
var router = require("express").Router();
// Create a new Member
router.post("/", member.create);
// Retrieve all Members
router.get("/", member.findAll);
// GET MEMBER
router.get("/:id", async (req, res) => {
const id = req.params.id;
if (!id) {
res.status(400).send({
message: "Member id cannot be empty!"
});
return
}
return db.Member.findByPk(id)
.then(async (member) => {
if (member === null) {
res.status(404).send({
message: `Member with id=${id} was not found!`
});
return
}
res.send(member)
})
.catch(err => {
res.status(500).send({
message:
err.message || "Some error occurred while retrieving members."
})
})
});
// GET MEMBER DETAILS
router.get("/:id/details", async (req, res) => {
const id = req.params.id;
if (!id) {
res.status(400).send({
message: "Member id cannot be empty!"
});
return
}
return db.Member.findByPk(id, {
include: [
'rank',
'status',
'awards',
'coursesSMEFor',
'coursesTaught',
'coursesAttended'
]
})
.then(async (member) => {
if (member === null) {
res.status(404).send({
message: `Member with id=${id} was not found!`
});
return
}
res.send(member)
})
.catch(err => {
res.status(500).send({
message:
err.message || "Some error occurred while retrieving members."
})
})
});
// COURSES TAUGHT
router.get("/:id/courses/taught", async (req, res) => {
const id = req.params.id;
if (!id) {
res.status(400).send({
message: "Member id cannot be empty!"
});
return
}
return db.Member.findByPk(id)
.then(async (member) => {
if (member === null) {
res.status(404).send({
message: `Member with id=${id} was not found!`
});
return
}
const courses = await member.getCoursesSMEFor()
res.send(courses)
})
.catch(err => {
res.status(500).send({
message:
err.message || "Some error occurred while retrieving members."
})
})
});
// COURSES ATTENDED
router.get("/:id/courses/attended", async (req, res) => {
const id = req.params.id;
if (!id) {
res.status(400).send({
message: "Member id cannot be empty!"
});
return
}
return db.Member.findByPk(id)
.then(async (member) => {
if (member === null) {
res.status(404).send({
message: `Member with id=${id} was not found!`
});
return
}
const courses = await member.getCoursesAttended()
res.send(courses)
})
.catch(err => {
res.status(500).send({
message:
err.message || "Some error occurred while retrieving members."
})
})
});
// COURSES SME FOR
router.get("/:id/courses/sme", async (req, res) => {
const id = req.params.id;
if (!id) {
res.status(400).send({
message: "Member id cannot be empty!"
});
return
}
return db.Member.findByPk(id)
.then(async (member) => {
if (member === null) {
res.status(404).send({
message: `Member with id=${id} was not found!`
});
return
}
const courses = await member.getCoursesSMEFor()
res.send(courses)
})
.catch(err => {
res.status(500).send({
message:
err.message || "Some error occurred while retrieving members."
})
})
});
// UPDATE MEMBER
router.put("/:id", async (req, res) => {
const id = req.params.id;
if (!id) {
res.status(400).send({
message: "Member id cannot be empty!"
});
return
}
return db.Member.findByPk(id)
.then(async (member) => {
if (member === null) {
res.status(404).send({
message: `Member with id=${id} was not found!`
});
return
}
member.set(req.body)
await member.save()
res.send(member)
})
.catch(err => {
res.status(500).send({
message:
err.message || "Some error occurred while retrieving members.",
error: err
})
})
});
// Delete a Member with id
router.delete("/:id", async (req, res) => {
const id = req.params.id;
if (!id) {
res.status(400).send({
message: "Member id cannot be empty!"
});
return
}
return db.Member.findByPk(id)
.then(async (member) => {
if (member === null) {
res.status(404).send({
message: `Member with id=${id} was not found!`
});
return
}
await member.destroy()
res.send({
deleted: member,
message: `Member with id=${id} was deleted!`
})
})
.catch(err => {
res.status(500).send({
message:
err.message || "Some error occurred while retrieving members.",
error: err
})
})
});
// Delete all Members
// router.delete("/", member.deleteAll);
module.exports = {
apiPath: "/api/members",
apiRouter: router
};