105 lines
2.2 KiB
JavaScript
105 lines
2.2 KiB
JavaScript
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 = []
|
|
}
|
|
|
|
let curNode = findByValue(folders, "folderParent", null);
|
|
while (folders.length > 0 && curNode != null) {
|
|
|
|
let childNode = findByValue(folders, "folderParent", curNode.folderId)
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
res.json(hierarchy);
|
|
}
|
|
|
|
exports.getFolders = async (req, res) => {
|
|
const folders = await folder.findAll();
|
|
res.json(folders);
|
|
}
|
|
|
|
exports.getFoldersById = async (req, res) => {
|
|
|
|
const id = req.params.id
|
|
|
|
const folders = await folder.findAll({
|
|
where: {
|
|
folderId: id,
|
|
}},
|
|
);
|
|
res.json(folders);
|
|
}
|
|
|
|
exports.createFolder = async (req, res) => {
|
|
const jsonFolder = req.body;
|
|
|
|
await folder.create({
|
|
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");
|
|
}
|
|
|
|
exports.deleteFolder = async (req, res) => {
|
|
const folderId = req.params.id;
|
|
|
|
await folder.destroy({
|
|
where: {
|
|
folderId:folderId,
|
|
},
|
|
});
|
|
|
|
res.status(200).json("ok");
|
|
}
|
|
|
|
function findByValue(list, key, value) {
|
|
|
|
for (el of list) {
|
|
if (el[key] == value) {
|
|
return el;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|