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) => {
|
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) {
|
||||||
|
|||||||
@@ -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;
|
||||||
Reference in New Issue
Block a user