Added: Level

This commit is contained in:
Llewellyn D'souza
2021-12-22 17:45:23 +05:30
parent ec5272f0fd
commit 04e2fe3f06
4 changed files with 120 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ const zoneRouter = require("./zone.router");
const areaRouter = require("./area.router");
const bayRouter = require("./bay.router");
const rowRouter = require("./row.router");
const levelRouter = require("./level.router");
router.use("/user", userRouter);
router.use("/company", companyRouter);
@@ -14,6 +15,7 @@ router.use("/zone", zoneRouter);
router.use("/area", areaRouter);
router.use("/bay", bayRouter);
router.use("/row", rowRouter);
router.use("/level", levelRouter);
router.get("/", (req, res) => {
res.send("Hello world");

View File

@@ -0,0 +1,94 @@
const Level = require("../models/Level");
const mongoose = require("mongoose");
module.exports = {
/**
* Gets the level data by `id`
*/
getLevelByID: async (req, res, next) => {
const { id } = req.params;
if (!id) {
res.status(400).send("Missing id param");
return;
}
try {
const levelData = await Level.findById(id);
if (!levelData) {
res.status(404);
return;
}
req.send(levelData);
} catch (error) {
next(error);
}
},
/**
* Create a level
*/
createLevel: async (req, res, next) => {
const { name, number, specs, bay_id } = req.body;
if (!(name && number)) {
res.status(400).send("Missing params param");
return;
}
try {
const levelData = new Level({
name,
number: parseInt(number),
specs,
bay_id: mongoose.Types.ObjectId(bay_id),
});
await levelData.save();
if (!levelData) {
res.status(404);
return;
}
req.send(levelData);
} catch (error) {
next(error);
}
},
/**
* Update a levels detail
*/
updateLevelByID: async (req, res, next) => {
const { id } = req.params;
if (!id) {
res.status(400).send("Missing id param");
return;
}
const { name, number, specs, bay_id } = req.body;
if (!(name || number || specs || bay_id)) {
res.status(400).send("Missing data in body");
return;
}
try {
const levelData = await Level.findById(id);
if (!levelData) {
res.status(404);
return;
}
if (name) levelData.name = name;
if (number) levelData.number = parseInt(number);
if (specs) levelData.specs = specs;
if (bay_id) levelData.bay_id = mongoose.Types.ObjectId(bay_id);
await levelData.save();
req.send(levelData);
} catch (error) {
next(error);
}
},
};

View File

@@ -0,0 +1,19 @@
const router = require("express").Router();
const controller = require("./level.controller");
/**
* @route /level/:id
*/
router.get("/:id", controller.getLevelByID);
/**
* @route /level/
*/
router.post("/", controller.createLevel);
/**
* @route /level/
*/
router.patch("/:id", controller.updateLevelByID);
module.exports = router;

View File

@@ -9,7 +9,7 @@ const schema = new mongoose.Schema(
},
number: {
required: true,
type: String,
type: Number,
trim: true,
},
specs: {
@@ -17,6 +17,10 @@ const schema = new mongoose.Schema(
type: String,
trim: true,
},
bay_id: {
type: mongoose.Schema.Types.ObjectId,
ref: "Bay",
},
sub_levels: [
{
type: {