added update folder + reworked folder fetching hierarchy
This commit is contained in:
@@ -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 toRemove = []
|
||||
for (let i = (folders.length - 1); i >= 0; i--) {
|
||||
let childNode = findByValue(folders, "folderParent", curNode.folderId)
|
||||
|
||||
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) {
|
||||
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user