Files
WebObsidian/api/controller/folder.controller.js
T
2026-04-26 15:54:13 +02:00

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;
}