diff --git a/api/controller/folder.controller.js b/api/controller/folder.controller.js index 5da8353..624fb35 100644 --- a/api/controller/folder.controller.js +++ b/api/controller/folder.controller.js @@ -1,18 +1,72 @@ const folder = require('../models/folder.model'); -exports.getFoldersHierarchy = async (req, res) => { - const folders = await folder.findAll({ - where: { - folderParent: null, - }, - include: [ - { - model: folder, - as: 'subFolders', - hierarchy: true, - } - ] - }); +exports.getFoldersByHierarchy = async (req, res) => { + let folders = await folder.findAll(); + + for (let i = 0; i < folders.length; i++) { + folders[i].dataValues.subFolders = [] + } + + 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); -} \ No newline at end of file +} + +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; +} + diff --git a/api/models/folder.model.js b/api/models/folder.model.js index fbac9aa..455d9ac 100644 --- a/api/models/folder.model.js +++ b/api/models/folder.model.js @@ -2,7 +2,7 @@ const {Sequelize, DataTypes} = require('sequelize'); const db = require('../config/db') const folder = db.define('Folders', { - folderid: { + folderId: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, diff --git a/api/routes/folder.routes.js b/api/routes/folder.routes.js index 46d0cfc..af1dbee 100644 --- a/api/routes/folder.routes.js +++ b/api/routes/folder.routes.js @@ -3,6 +3,10 @@ const router = express.Router(); 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; \ No newline at end of file