Update: add sublevel to parent
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
const Sublevel = require("../models/Sublevel");
|
||||
const mongoose = require("mongoose");
|
||||
const { addSublevelToParent } = require("./utils/sublevel");
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
@@ -29,7 +30,7 @@ module.exports = {
|
||||
* Create a sublevel
|
||||
*/
|
||||
createSubLevel: async (req, res, next) => {
|
||||
const { name, type, specs, parent_id, parentIsLevel } = req.body;
|
||||
const { name, type, specs, parent_id, parentIsLevel, positions } = req.body;
|
||||
|
||||
if (!(name && type && parent_id)) {
|
||||
res.status(400).send("Missing params param");
|
||||
@@ -41,7 +42,7 @@ module.exports = {
|
||||
? { parent_current_depth: 0, parent_main_level_id: parent_id }
|
||||
: await Sublevel.findById(parent_id);
|
||||
|
||||
const sublevelData = new Sublevel({
|
||||
const sublevelData = Sublevel.create({
|
||||
name,
|
||||
type: type,
|
||||
specs,
|
||||
@@ -50,6 +51,8 @@ module.exports = {
|
||||
parent_sublevel_id: mongoose.Types.ObjectId(parent_id),
|
||||
});
|
||||
|
||||
await addSublevelToParent({ type, positions, sub_level_id: sublevelData._id.toString() }, parent_id, parentIsLevel);
|
||||
|
||||
await sublevelData.save();
|
||||
if (!sublevelData) {
|
||||
res.status(404);
|
||||
|
||||
@@ -44,3 +44,23 @@ exports.deleteSubLevelTreeFromRoot = async (root_sub_level_id) => {
|
||||
console.log("Deleting sub-level tree", { sub_level_ids });
|
||||
return sub_level_ids;
|
||||
};
|
||||
|
||||
/**
|
||||
* Add the sublevel data to the parent document
|
||||
* @param {{type: string, positions: string[], sub_level_id: string}} payload The sublevel data
|
||||
* @param {string} parent_id The parent level ID
|
||||
* @param {boolean} parentIsLevel Is parent a level?
|
||||
*/
|
||||
exports.addSublevelToParent = async (payload, parent_id, parentIsLevel) => {
|
||||
if (parentIsLevel) {
|
||||
// add sublevel to parent
|
||||
const parentData = await Sublevel.findById(parent_id);
|
||||
parentData.sub_levels.push(payload);
|
||||
return await parentData.save();
|
||||
} else {
|
||||
// add sublevel to sublevel
|
||||
const parentData = await Sublevel.findById(parent_id);
|
||||
parentData.sub_levels.push(payload);
|
||||
return await parentData.save();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -29,7 +29,7 @@ const schema = new mongoose.Schema(
|
||||
type: String,
|
||||
enum: SubLevelTypes,
|
||||
},
|
||||
postition: [
|
||||
postitions: [
|
||||
{
|
||||
type: String,
|
||||
enum: LevelPositions,
|
||||
|
||||
Reference in New Issue
Block a user