validate positions

This commit is contained in:
Llewellyn D'souza
2021-12-30 14:38:03 +05:30
parent e64e2a98c8
commit 8c721f3b1d
2 changed files with 28 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
const Sublevel = require("../models/Sublevel");
const mongoose = require("mongoose");
const { addSublevelToParent, deleteSubLevelTreeFromRoot } = require("./utils/sublevel");
const { addSublevelToParent, deleteSubLevelTreeFromRoot, validPositions } = require("./utils/sublevel");
const { SubLevelTypes } = require("../config/constants");
module.exports = {
/**
@@ -32,11 +33,21 @@ module.exports = {
createSubLevel: async (req, res, next) => {
const { name, type, specs, parent_id, parentIsLevel, positions } = req.body;
if (!(name && type && parent_id)) {
if (!(name && type && parent_id && positions)) {
res.status(400).send("Missing params param");
return;
}
if (!SubLevelTypes.includes(type)) {
res.status(400).send("Invalid type");
return;
}
if (!validPositions(positions)) {
res.status(400).send("Invalid positions");
return;
}
try {
const parentData = parentIsLevel ? { parent_current_depth: 0, parent_main_level_id: parent_id } : await Sublevel.findById(parent_id);
@@ -76,6 +87,11 @@ module.exports = {
return;
}
if (type && !SubLevelTypes.includes(type)) {
res.status(400).send("Invalid type");
return;
}
try {
const sublevelData = await Sublevel.findById(id);
if (!sublevelData) {

View File

@@ -95,10 +95,20 @@ const findAvailablePositions = (sublevelData) => {
return LevelPositions.filter((pos) => !positionsOccupied.includes(pos));
};
/**
* Check if positions are valid positions
* @param {string[]} positions An array of positions
* @returns {boolean}
*/
const validPositions = (positions) => {
return positions.every((position) => LevelPositions.includes(position));
};
module.exports = {
addSublevelToParent,
removeSublevelFromParent,
deleteSubLevelTreeFromRoot,
moveSublevel,
findAvailablePositions,
validPositions,
};