From fad703f0b7bb7d28d37a5d7326b3577fc4634849 Mon Sep 17 00:00:00 2001 From: Llewellyn D'souza Date: Wed, 29 Dec 2021 17:16:22 +0530 Subject: [PATCH] Update: add sublevel to parent --- src/controller/sublevel.controller.js | 7 +++++-- src/controller/utils/sublevel.js | 20 ++++++++++++++++++++ src/models/Level.js | 2 +- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/controller/sublevel.controller.js b/src/controller/sublevel.controller.js index 374c0ec..d97789f 100644 --- a/src/controller/sublevel.controller.js +++ b/src/controller/sublevel.controller.js @@ -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); diff --git a/src/controller/utils/sublevel.js b/src/controller/utils/sublevel.js index c9af515..8427fda 100644 --- a/src/controller/utils/sublevel.js +++ b/src/controller/utils/sublevel.js @@ -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(); + } +}; diff --git a/src/models/Level.js b/src/models/Level.js index 4e0dee5..8248963 100644 --- a/src/models/Level.js +++ b/src/models/Level.js @@ -29,7 +29,7 @@ const schema = new mongoose.Schema( type: String, enum: SubLevelTypes, }, - postition: [ + postitions: [ { type: String, enum: LevelPositions,