diff --git a/src/controller/utils/sublevel.js b/src/controller/utils/sublevel.js new file mode 100644 index 0000000..9fcca0b --- /dev/null +++ b/src/controller/utils/sublevel.js @@ -0,0 +1,30 @@ +const SubLevel = require("../../models/Sublevel"); +const Level = require("../../models/Level"); + +// exports.moveSublevel = async (sub_level_id, under_sub_or_level_id, isMainLevel) => { + +// }; + +exports.deleteSubLevelTreeFromRoot = async (root_sub_level_id) => { + let sub_level_ids = []; + let temp_sub_level_ids = [root_sub_level_id]; + + while (temp_sub_level_ids.length > 0) { + const level_sub_level_data = await SubLevel.find({ + _id: temp_sub_level_ids, + }); + + sub_level_ids = [...sub_level_ids, ...temp_sub_level_ids]; + temp_sub_level_ids = []; + + level_sub_level_data.forEach((sub_level_data) => { + sub_level_data.sub_levels.forEach((sub_level) => { + temp_sub_level_ids.push(sub_level.sub_level_id.toString()); + }); + }); + } + + await SubLevel.deleteMany({ _id: sub_level_ids }); + console.log("Deleting sub-level tree", { sub_level_ids }); + return sub_level_ids; +}; diff --git a/src/models/Sublevel.js b/src/models/Sublevel.js index 1334ae6..465de94 100644 --- a/src/models/Sublevel.js +++ b/src/models/Sublevel.js @@ -67,6 +67,12 @@ const schema = new mongoose.Schema( } ); +schema.pre("save", function (next) { + // const sublevel = this; + // // write validation here? + next(); +}); + const SubLevel = mongoose.model("SubLevel", schema); module.exports = SubLevel;