Initial commit
TODO: change api.conf URL references to use environment variables and add these variables to the docker-compose configuration for host domain
This commit is contained in:
98
api/db/routes/Award.route.js
Normal file
98
api/db/routes/Award.route.js
Normal file
@@ -0,0 +1,98 @@
|
||||
|
||||
const award = require("../controllers/Award.controller.js");
|
||||
|
||||
const db = require("..");
|
||||
|
||||
var router = require("express").Router();
|
||||
|
||||
// Create a new Award
|
||||
router.post("/", award.create);
|
||||
|
||||
// GET AWARD
|
||||
router.get("/", async (req, res) => {
|
||||
const id = req.query.id;
|
||||
if (!id) {
|
||||
return db.Award.findAll()
|
||||
.then(results => res.send(results))
|
||||
}
|
||||
|
||||
return db.Award.findByPk(id)
|
||||
.then(async (award) => {
|
||||
if (award === null) {
|
||||
res.status(404).send({
|
||||
message: `Award with id=${id} was not found!`
|
||||
});
|
||||
return
|
||||
}
|
||||
res.send(award)
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(500).send({
|
||||
message:
|
||||
err.message || "Some error occurred while retrieving awards."
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
// GET AWARD DETAILS
|
||||
router.get("/details", async (req, res) => {
|
||||
const id = req.query.id;
|
||||
if (!id) {
|
||||
res.status(400).send({
|
||||
message: "Award id cannot be empty!"
|
||||
});
|
||||
return
|
||||
}
|
||||
return db.Award.findByPk(id, {
|
||||
include: [
|
||||
'awardHolders',
|
||||
'coursesRequired'
|
||||
]
|
||||
})
|
||||
.then(async (award) => {
|
||||
if (award === null) {
|
||||
res.status(404).send({
|
||||
message: `Award with id=${id} was not found!`
|
||||
});
|
||||
return
|
||||
}
|
||||
res.send(award)
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(500).send({
|
||||
message:
|
||||
err.message || "Some error occurred while retrieving awards."
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
// GET CATEGORIES
|
||||
router.get("/categories", async (req, res) => {
|
||||
return db.Award.findAll({
|
||||
attributes: ['category'],
|
||||
group: ['category']
|
||||
})
|
||||
.then(async (awardCategories) => {
|
||||
if (awardCategories === null) {
|
||||
res.status(404).send({
|
||||
message: `Award categories were not found!`
|
||||
});
|
||||
return
|
||||
}
|
||||
res.send(awardCategories.map(awardCategory => awardCategory.category))
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(500).send({
|
||||
message:
|
||||
err.message || "Some error occurred while retrieving award categories."
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
|
||||
module.exports = {
|
||||
apiPath: "/api/awards",
|
||||
apiRouter: router
|
||||
};
|
||||
96
api/db/routes/Course.route.js
Normal file
96
api/db/routes/Course.route.js
Normal file
@@ -0,0 +1,96 @@
|
||||
const courses = require("../controllers/Course.controller.js");
|
||||
|
||||
const db = require("..");
|
||||
|
||||
var router = require("express").Router();
|
||||
|
||||
// Create a new Course
|
||||
router.post("/", courses.create);
|
||||
|
||||
// GET AWARD
|
||||
router.get("/", async (req, res) => {
|
||||
const id = req.query.id;
|
||||
if (!id) {
|
||||
return db.Course.findAll()
|
||||
.then(results => res.send(results))
|
||||
}
|
||||
|
||||
return db.Course.findByPk(id)
|
||||
.then(async (course) => {
|
||||
if (course === null) {
|
||||
res.status(404).send({
|
||||
message: `Course with id=${id} was not found!`
|
||||
});
|
||||
return
|
||||
}
|
||||
res.send(course)
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(500).send({
|
||||
message:
|
||||
err.message || "Some error occurred while retrieving courses."
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
// GET AWARD DETAILS
|
||||
router.get("/details", async (req, res) => {
|
||||
const id = req.query.id;
|
||||
if (!id) {
|
||||
res.status(400).send({
|
||||
message: "Course id cannot be empty!"
|
||||
});
|
||||
return
|
||||
}
|
||||
return db.Course.findByPk(id, {
|
||||
include: [
|
||||
'trainingsHeld',
|
||||
'possibleAwards',
|
||||
'sme'
|
||||
]
|
||||
})
|
||||
.then(async (course) => {
|
||||
if (course === null) {
|
||||
res.status(404).send({
|
||||
message: `Course with id=${id} was not found!`
|
||||
});
|
||||
return
|
||||
}
|
||||
res.send(course)
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(500).send({
|
||||
message:
|
||||
err.message || "Some error occurred while retrieving courses."
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
// GET CATEGORIES
|
||||
router.get("/categories", async (req, res) => {
|
||||
return db.Course.findAll({
|
||||
attributes: ['category'],
|
||||
group: ['category']
|
||||
})
|
||||
.then(async (courseCategories) => {
|
||||
if (courseCategories === null) {
|
||||
res.status(404).send({
|
||||
message: `Course categories were not found!`
|
||||
});
|
||||
return
|
||||
}
|
||||
res.send(courseCategories.map(courseCategory => courseCategory.category))
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(500).send({
|
||||
message:
|
||||
err.message || "Some error occurred while retrieving course categories."
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
apiPath: "/api/courses",
|
||||
apiRouter: router
|
||||
};
|
||||
231
api/db/routes/Member.route.js
Normal file
231
api/db/routes/Member.route.js
Normal file
@@ -0,0 +1,231 @@
|
||||
|
||||
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
|
||||
};
|
||||
95
api/db/routes/Rank.route.js
Normal file
95
api/db/routes/Rank.route.js
Normal file
@@ -0,0 +1,95 @@
|
||||
const rank = require("../controllers/Rank.controller.js");
|
||||
|
||||
const db = require("..");
|
||||
|
||||
var router = require("express").Router();
|
||||
|
||||
// Create a new Rank
|
||||
router.post("/", rank.create);
|
||||
|
||||
// GET RANK
|
||||
router.get("/", async (req, res) => {
|
||||
const id = req.query.id;
|
||||
if (!id) {
|
||||
return db.Rank.findAll()
|
||||
.then(results => res.send(results))
|
||||
}
|
||||
|
||||
return db.Rank.findByPk(id)
|
||||
.then(async (rank) => {
|
||||
if (rank === null) {
|
||||
res.status(404).send({
|
||||
message: `Rank with id=${id} was not found!`
|
||||
});
|
||||
return
|
||||
}
|
||||
res.send(rank)
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(500).send({
|
||||
message:
|
||||
err.message || "Some error occurred while retrieving ranks."
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
// GET RANK DETAILS
|
||||
router.get("/details", async (req, res) => {
|
||||
const id = req.query.id;
|
||||
if (!id) {
|
||||
res.status(400).send({
|
||||
message: "Rank id cannot be empty!"
|
||||
});
|
||||
return
|
||||
}
|
||||
return db.Rank.findByPk(id, {
|
||||
include: [
|
||||
'members',
|
||||
]
|
||||
})
|
||||
.then(async (rank) => {
|
||||
if (rank === null) {
|
||||
res.status(404).send({
|
||||
message: `Rank with id=${id} was not found!`
|
||||
});
|
||||
return
|
||||
}
|
||||
res.send(rank)
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(500).send({
|
||||
message:
|
||||
err.message || "Some error occurred while retrieving ranks."
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
// GET CATEGORIES
|
||||
router.get("/categories", async (req, res) => {
|
||||
return db.Rank.findAll({
|
||||
attributes: ['category'],
|
||||
group: ['category']
|
||||
})
|
||||
.then(async (rankCategories) => {
|
||||
if (rankCategories === null) {
|
||||
res.status(404).send({
|
||||
message: `Rank categories were not found!`
|
||||
});
|
||||
return
|
||||
}
|
||||
res.send(rankCategories.map(rankCategory => rankCategory.category))
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(500).send({
|
||||
message:
|
||||
err.message || "Some error occurred while retrieving rank categories."
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
module.exports = {
|
||||
apiPath: "/api/ranks",
|
||||
apiRouter: router
|
||||
};
|
||||
Reference in New Issue
Block a user