From 132b8cacd535665dc0f76c6e20d5b028449f9447 Mon Sep 17 00:00:00 2001 From: helori_ollivier Date: Fri, 24 Apr 2026 23:28:53 +0200 Subject: [PATCH] foder route ok --- api/config/db.js | 32 +++++++++++----------- api/controller/file.controller.js | 0 api/controller/folder.controller.js | 18 +++++++++++++ api/index.js | 41 +++++++++++++++-------------- api/models/file.model.js | 0 api/models/folder.model.js | 28 ++++++++++++++++++++ api/routes/file.routes.js | 0 api/routes/folder.routes.js | 8 ++++++ 8 files changed, 91 insertions(+), 36 deletions(-) delete mode 100644 api/controller/file.controller.js create mode 100644 api/controller/folder.controller.js delete mode 100644 api/models/file.model.js create mode 100644 api/models/folder.model.js delete mode 100644 api/routes/file.routes.js create mode 100644 api/routes/folder.routes.js diff --git a/api/config/db.js b/api/config/db.js index 2d159c1..387e40e 100644 --- a/api/config/db.js +++ b/api/config/db.js @@ -1,18 +1,18 @@ -const mysql = require('mysql2'); +const { Sequelize } = require('sequelize'); -const connection = mysql.createConnection({ - host: process.env.DB_HOST || 'localhost', - user: process.env.DB_USER || 'root', - password: process.env.DB_PASSWORD || '', - database: process.env.DB_NAME || 'my_database' -}); +// Connexion à la base de données MySQL +const db = new Sequelize( + process.env.DB_NAME, // Nom de la base de données + process.env.DB_USER, // Utilisateur + process.env.DB_PASSWORD, // Mot de passe + { + host: process.env.DB_HOST, // Hôte de la base de données (localhost ou IP) + dialect: 'mysql', // Type de base de données + logging: false, // Désactiver les logs de SQL (facultatif) + define: { + timestamps: false + } +} +); -connection.connect((err) => { - if (err) { - console.error('Erreur de connexion à la BDD:', err); - } else { - console.log('Connecté à la base de données MariaDB'); - } -}); - -module.exports = connection; \ No newline at end of file +module.exports = db; \ No newline at end of file diff --git a/api/controller/file.controller.js b/api/controller/file.controller.js deleted file mode 100644 index e69de29..0000000 diff --git a/api/controller/folder.controller.js b/api/controller/folder.controller.js new file mode 100644 index 0000000..5da8353 --- /dev/null +++ b/api/controller/folder.controller.js @@ -0,0 +1,18 @@ +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, + } + ] + }); + + res.json(folders); +} \ No newline at end of file diff --git a/api/index.js b/api/index.js index 88286ec..8124921 100644 --- a/api/index.js +++ b/api/index.js @@ -1,26 +1,27 @@ +require('dotenv').config(); + const express = require('express'); -const bodyParser = require('body-parser'); - -const dotenv = require('dotenv') - -const errorHandler = require('./utils/error.handler'); - -dotenv.config() - const app = express(); -// Middleware pour parser le corps des requêtes -app.use(bodyParser.json()); +const folderRoutes = require('./routes/folder.routes'); +const db = require('./config/db'); +// Middleware pour le parsing des JSON +app.use(express.json()); -// Routes +// Utilisation des routes +app.use('/api', folderRoutes); - -// Gestion des erreurs -app.use(errorHandler); - -// Lancer le serveur -const PORT = process.env.PORT || 5000; -app.listen(PORT, () => { - console.log(`Serveur en écoute sur le port ${PORT}`); -}); \ No newline at end of file +// Démarrer l'application et connecter la base de données +const port = process.env.PORT || 5000 +db + .authenticate() + .then(() => { + console.log('Connexion à la base de données réussie'); + app.listen(port, () => { + console.log(`Serveur démarré sur le port ${port}`); + }); + }) + .catch((error) => { + console.error('Impossible de se connecter à la base de données:', error); + }); \ No newline at end of file diff --git a/api/models/file.model.js b/api/models/file.model.js deleted file mode 100644 index e69de29..0000000 diff --git a/api/models/folder.model.js b/api/models/folder.model.js new file mode 100644 index 0000000..fbac9aa --- /dev/null +++ b/api/models/folder.model.js @@ -0,0 +1,28 @@ +const {Sequelize, DataTypes} = require('sequelize'); +const db = require('../config/db') + +const folder = db.define('Folders', { + folderid: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + + folderName: { + type: DataTypes.STRING, + allowNull: false, + }, + + folderParent: { + type: DataTypes.INTEGER, + allowNull: true, + references: { + model: 'File', + key: 'folderId', + }, + }, +}); + +folder.hasMany(folder, { as: 'subFolders', foreignKey: 'folderParent' }); + +module.exports = folder; diff --git a/api/routes/file.routes.js b/api/routes/file.routes.js deleted file mode 100644 index e69de29..0000000 diff --git a/api/routes/folder.routes.js b/api/routes/folder.routes.js new file mode 100644 index 0000000..46d0cfc --- /dev/null +++ b/api/routes/folder.routes.js @@ -0,0 +1,8 @@ +const express = require('express'); +const router = express.Router(); + +const folderController = require('../controller/folder.controller') + +router.get('/folders', folderController.getFoldersHierarchy); + +module.exports = router; \ No newline at end of file