This commit is contained in:
ExostFlash 2025-07-11 17:13:35 +02:00
parent 8da10094ad
commit 2a264fb6a5
5 changed files with 42 additions and 12 deletions

6
app.js
View file

@ -3,9 +3,15 @@ const express = require('express');
const app = express(); const app = express();
const swaggerUi = require('swagger-ui-express'); const swaggerUi = require('swagger-ui-express');
const swaggerSpec = require('./swagger'); const swaggerSpec = require('./swagger');
const cors = require('cors');
const db = require('./config/db'); const db = require('./config/db');
// Middlewares // Middlewares
app.use(cors({
origin: '*',
methods: ["GET", "POST", "PUT", "DELETE"],
credentials: true,
}));
app.use(express.json()); app.use(express.json());
// Swagger // Swagger

View file

@ -1,30 +1,30 @@
const db = require('../config/db'); const db = require('../config/db');
exports.getAllGroups = async (req, res) => { exports.getAllGroups = async (req, res) => {
const [rows] = await db.query('SELECT * FROM groups'); const [rows] = await db.query('SELECT * FROM `groups`');
res.json(rows); res.json(rows);
}; };
exports.getGroupById = async (req, res) => { exports.getGroupById = async (req, res) => {
const [rows] = await db.query('SELECT * FROM groups WHERE id = ?', [req.params.id]); const [rows] = await db.query('SELECT * FROM `groups` WHERE id = ?', [req.params.id]);
if (rows.length === 0) return res.status(404).json({ error: 'Group not found' }); if (rows.length === 0) return res.status(404).json({ error: 'Group not found' });
res.json(rows[0]); res.json(rows[0]);
}; };
exports.createGroup = async (req, res) => { exports.createGroup = async (req, res) => {
const { name } = req.body; const { name } = req.body;
await db.query('INSERT INTO groups (name) VALUES (?)', [name]); await db.query('INSERT INTO `groups` (name) VALUES (?)', [name]);
res.status(201).json({ message: 'Group created' }); res.status(201).json({ message: 'Group created' });
}; };
exports.updateGroup = async (req, res) => { exports.updateGroup = async (req, res) => {
const { name } = req.body; const { name } = req.body;
await db.query('UPDATE groups SET name = ? WHERE id = ?', [name, req.params.id]); await db.query('UPDATE `groups` SET name = ? WHERE id = ?', [name, req.params.id]);
res.json({ message: 'Group updated' }); res.json({ message: 'Group updated' });
}; };
exports.deleteGroup = async (req, res) => { exports.deleteGroup = async (req, res) => {
await db.query('DELETE FROM groups WHERE id = ?', [req.params.id]); await db.query('DELETE FROM `groups` WHERE id = ?', [req.params.id]);
res.status(204).send(); res.status(204).send();
}; };
@ -39,7 +39,7 @@ exports.getGroupUsers = async (req, res) => {
exports.getGroupCours = async (req, res) => { exports.getGroupCours = async (req, res) => {
const [rows] = await db.query(` const [rows] = await db.query(`
SELECT c.* FROM courses c SELECT c.* FROM cours c
JOIN group_cours gc ON gc.cours_id = c.id JOIN group_cours gc ON gc.cours_id = c.id
WHERE gc.group_id = ? WHERE gc.group_id = ?
`, [req.params.id]); `, [req.params.id]);
@ -64,6 +64,6 @@ exports.removeUserFromGroup = async (req, res) => {
}; };
exports.removeCoursFromGroup = async (req, res) => { exports.removeCoursFromGroup = async (req, res) => {
await db.query('DELETE FROM group_courses WHERE group_id = ? AND course_id = ?', [req.params.id, req.params.courseId]); await db.query('DELETE FROM group_cours WHERE group_id = ? AND cours_id = ?', [req.params.id, req.params.coursId]);
res.status(204).send(); res.status(204).send();
}; };

23
package-lock.json generated
View file

@ -9,6 +9,7 @@
"version": "1.0.0", "version": "1.0.0",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"cors": "^2.8.5",
"dotenv": "^17.1.0", "dotenv": "^17.1.0",
"express": "^5.1.0", "express": "^5.1.0",
"mysql2": "^3.14.1", "mysql2": "^3.14.1",
@ -241,6 +242,19 @@
"node": ">=6.6.0" "node": ">=6.6.0"
} }
}, },
"node_modules/cors": {
"version": "2.8.5",
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
"license": "MIT",
"dependencies": {
"object-assign": "^4",
"vary": "^1"
},
"engines": {
"node": ">= 0.10"
}
},
"node_modules/debug": { "node_modules/debug": {
"version": "4.4.1", "version": "4.4.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
@ -825,6 +839,15 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object-inspect": { "node_modules/object-inspect": {
"version": "1.13.4", "version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",

View file

@ -14,6 +14,7 @@
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"dependencies": { "dependencies": {
"cors": "^2.8.5",
"dotenv": "^17.1.0", "dotenv": "^17.1.0",
"express": "^5.1.0", "express": "^5.1.0",
"mysql2": "^3.14.1", "mysql2": "^3.14.1",

View file

@ -170,7 +170,7 @@ router.post('/:id/users', groupController.addUserToGroup);
* schema: * schema:
* type: object * type: object
* properties: * properties:
* courseId: { type: integer } * coursId: { type: integer }
* responses: * responses:
* 200: * 200:
* description: Cours added to group * description: Cours added to group
@ -200,9 +200,9 @@ router.delete('/:id/users/:userId', groupController.removeUserFromGroup);
/** /**
* @swagger * @swagger
* /groups/{id}/cours/{courseId}: * /groups/{id}/cours/{coursId}:
* delete: * delete:
* summary: Remove a course from a group * summary: Remove a cours from a group
* tags: [Groups] * tags: [Groups]
* parameters: * parameters:
* - in: path * - in: path
@ -210,13 +210,13 @@ router.delete('/:id/users/:userId', groupController.removeUserFromGroup);
* required: true * required: true
* schema: { type: integer } * schema: { type: integer }
* - in: path * - in: path
* name: courseId * name: coursId
* required: true * required: true
* schema: { type: integer } * schema: { type: integer }
* responses: * responses:
* 204: * 204:
* description: Removed * description: Removed
*/ */
router.delete('/:id/cours/:courseId', groupController.removeCoursFromGroup); router.delete('/:id/cours/:coursId', groupController.removeCoursFromGroup);
module.exports = router; module.exports = router;