added update folder + reworked folder fetching hierarchy

This commit is contained in:
helori_ollivier
2026-04-26 15:27:39 +02:00
parent a0e23b672a
commit d9f173d028
2 changed files with 42 additions and 21 deletions
+41 -21
View File
@@ -2,33 +2,35 @@ const folder = require('../models/folder.model');
exports.getFoldersByHierarchy = async (req, res) => {
let folders = await folder.findAll();
let hierarchy = []
for (let i = 0; i < folders.length; i++) {
folders[i].dataValues.subFolders = []
}
console.log(folders);
let curNode = findByValue(folders, "folderParent", null);
while (folders.length > 0 && curNode != null) {
let childNode = findByValue(folders, "folderParent", curNode.folderId)
let toRemove = []
for (let i = (folders.length - 1); i >= 0; i--) {
parent = findByValue(folders, "folderId", folders[i].folderParent);
if (parent != null) {
console.log("parent: ", parent);
parent.dataValues.subFolders.push(folders[i]);
toRemove.push(i);
if (childNode) {
curNode.dataValues.subFolders.push(childNode);
curNode = childNode;
}
else if (curNode.folderParent != null) {
folders.splice(folders.indexOf(curNode), 1);
curNode = findByValue(folders, "folderId", curNode.folderParent);
}
else {
folders.splice(folders.indexOf(curNode), 1);
hierarchy.push(curNode);
curNode = findByValue(folders, "folderParent", null);
}
}
console.log(toRemove)
for (el of toRemove) {
folders.splice(el, 1);
}
console.log(folders);
res.json(folders);
res.json(hierarchy);
}
exports.getFolders = async (req, res) => {
@@ -49,16 +51,34 @@ exports.getFoldersById = async (req, res) => {
}
exports.createFolder = async (req, res) => {
const josnFolder = req.body;
const jsonFolder = req.body;
await folder.create({
folderName: josnFolder.name,
folderParent: josnFolder.parent,
folderName: jsonFolder.name,
folderParent: jsonFolder.parent,
});
res.status(201).json("ok");
}
exports.updateFolder = async (req, res) => {
const folderId = req.params.id
const jsonFolder = req.body;
await folder.update({
folderName: jsonFolder.name,
folderParent: jsonFolder.parent,
},
{
where: {
folderId: folderId,
},
});
res.status(200).json("ok");
}
function findByValue(list, key, value) {
for (el of list) {
+1
View File
@@ -8,5 +8,6 @@ router.get('/folders/hierarchy', folderController.getFoldersByHierarchy);
router.get('/folders/:id', folderController.getFoldersById);
router.post('/folders', folderController.createFolder);
router.put('/folders/:id', folderController.updateFolder);
module.exports = router;