reworked folder hierarchy fetch + adde folder creation

This commit is contained in:
helori_ollivier
2026-04-26 14:42:43 +02:00
parent 132b8cacd5
commit a0e23b672a
3 changed files with 74 additions and 16 deletions
+66 -12
View File
@@ -1,18 +1,72 @@
const folder = require('../models/folder.model'); const folder = require('../models/folder.model');
exports.getFoldersHierarchy = async (req, res) => { exports.getFoldersByHierarchy = async (req, res) => {
const folders = await folder.findAll({ let folders = await folder.findAll();
where: {
folderParent: null, for (let i = 0; i < folders.length; i++) {
}, folders[i].dataValues.subFolders = []
include: [
{
model: folder,
as: 'subFolders',
hierarchy: true,
} }
]
}); console.log(folders);
let toRemove = []
for (let i = (folders.length - 1); i >= 0; i--) {
parent = findByValue(folders, "folderId", folders[i].folderParent);
if (parent != null) {
console.log("parent: ", parent);
parent.dataValues.subFolders.push(folders[i]);
toRemove.push(i);
}
}
console.log(toRemove)
for (el of toRemove) {
folders.splice(el, 1);
}
console.log(folders);
res.json(folders); res.json(folders);
} }
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 josnFolder = req.body;
await folder.create({
folderName: josnFolder.name,
folderParent: josnFolder.parent,
});
res.status(201).json("ok");
}
function findByValue(list, key, value) {
for (el of list) {
if (el[key] == value) {
return el;
}
}
return null;
}
+1 -1
View File
@@ -2,7 +2,7 @@ const {Sequelize, DataTypes} = require('sequelize');
const db = require('../config/db') const db = require('../config/db')
const folder = db.define('Folders', { const folder = db.define('Folders', {
folderid: { folderId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true,
+5 -1
View File
@@ -3,6 +3,10 @@ const router = express.Router();
const folderController = require('../controller/folder.controller') const folderController = require('../controller/folder.controller')
router.get('/folders', folderController.getFoldersHierarchy); router.get('/folders', folderController.getFolders);
router.get('/folders/hierarchy', folderController.getFoldersByHierarchy);
router.get('/folders/:id', folderController.getFoldersById);
router.post('/folders', folderController.createFolder);
module.exports = router; module.exports = router;