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
+40 -20
View File
@@ -2,33 +2,35 @@ const folder = require('../models/folder.model');
exports.getFoldersByHierarchy = async (req, res) => { exports.getFoldersByHierarchy = async (req, res) => {
let folders = await folder.findAll(); let folders = await folder.findAll();
let hierarchy = []
for (let i = 0; i < folders.length; i++) { for (let i = 0; i < folders.length; i++) {
folders[i].dataValues.subFolders = [] folders[i].dataValues.subFolders = []
} }
console.log(folders); let curNode = findByValue(folders, "folderParent", null);
while (folders.length > 0 && curNode != null) {
let toRemove = [] let childNode = findByValue(folders, "folderParent", curNode.folderId)
for (let i = (folders.length - 1); i >= 0; i--) {
parent = findByValue(folders, "folderId", folders[i].folderParent); if (childNode) {
if (parent != null) { curNode.dataValues.subFolders.push(childNode);
console.log("parent: ", parent); curNode = childNode;
parent.dataValues.subFolders.push(folders[i]);
toRemove.push(i);
} }
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) res.json(hierarchy);
for (el of toRemove) {
folders.splice(el, 1);
}
console.log(folders);
res.json(folders);
} }
exports.getFolders = async (req, res) => { exports.getFolders = async (req, res) => {
@@ -49,16 +51,34 @@ exports.getFoldersById = async (req, res) => {
} }
exports.createFolder = async (req, res) => { exports.createFolder = async (req, res) => {
const josnFolder = req.body; const jsonFolder = req.body;
await folder.create({ await folder.create({
folderName: josnFolder.name, folderName: jsonFolder.name,
folderParent: josnFolder.parent, folderParent: jsonFolder.parent,
}); });
res.status(201).json("ok"); 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) { function findByValue(list, key, value) {
for (el of list) { for (el of list) {
+1
View File
@@ -8,5 +8,6 @@ router.get('/folders/hierarchy', folderController.getFoldersByHierarchy);
router.get('/folders/:id', folderController.getFoldersById); router.get('/folders/:id', folderController.getFoldersById);
router.post('/folders', folderController.createFolder); router.post('/folders', folderController.createFolder);
router.put('/folders/:id', folderController.updateFolder);
module.exports = router; module.exports = router;