projet_fil_red_api/routes/groups.js
ExostFlash 2a264fb6a5 modfi
2025-07-11 17:13:35 +02:00

222 lines
4.8 KiB
JavaScript

const express = require('express');
const router = express.Router();
const groupController = require('../controllers/groupController');
/**
* @swagger
* /groups:
* get:
* summary: Get all groups
* tags: [Groups]
* responses:
* 200:
* description: List of groups
*/
router.get('/', groupController.getAllGroups);
/**
* @swagger
* /groups/{id}:
* get:
* summary: Get group by ID
* tags: [Groups]
* parameters:
* - in: path
* name: id
* required: true
* schema: { type: integer }
* responses:
* 200:
* description: Group found
*/
router.get('/:id', groupController.getGroupById);
/**
* @swagger
* /groups:
* post:
* summary: Create a new group
* tags: [Groups]
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* name: { type: string }
* responses:
* 201:
* description: Group created
*/
router.post('/', groupController.createGroup);
/**
* @swagger
* /groups/{id}:
* put:
* summary: Update a group
* tags: [Groups]
* parameters:
* - in: path
* name: id
* schema: { type: integer }
* required: true
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* name: { type: string }
* responses:
* 200:
* description: Group updated
*/
router.put('/:id', groupController.updateGroup);
/**
* @swagger
* /groups/{id}:
* delete:
* summary: Delete a group
* tags: [Groups]
* parameters:
* - in: path
* name: id
* required: true
* schema: { type: integer }
* responses:
* 204:
* description: Deleted
*/
router.delete('/:id', groupController.deleteGroup);
/**
* @swagger
* /groups/{id}/users:
* get:
* summary: Get all users in a group
* tags: [Groups]
* parameters:
* - in: path
* name: id
* required: true
* schema: { type: integer }
* responses:
* 200:
* description: Users found
*/
router.get('/:id/users', groupController.getGroupUsers);
/**
* @swagger
* /groups/{id}/cours:
* get:
* summary: Get all cours in a group
* tags: [Groups]
* parameters:
* - in: path
* name: id
* required: true
* schema: { type: integer }
* responses:
* 200:
* description: Cours found
*/
router.get('/:id/cours', groupController.getGroupCours);
/**
* @swagger
* /groups/{id}/users:
* post:
* summary: Add a user to a group
* tags: [Groups]
* parameters:
* - in: path
* name: id
* required: true
* schema: { type: integer }
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* userId: { type: integer }
* responses:
* 200:
* description: User added to group
*/
router.post('/:id/users', groupController.addUserToGroup);
/**
* @swagger
* /groups/{id}/cours:
* post:
* summary: Add a cours to a group
* tags: [Groups]
* parameters:
* - in: path
* name: id
* required: true
* schema: { type: integer }
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* coursId: { type: integer }
* responses:
* 200:
* description: Cours added to group
*/
router.post('/:id/cours', groupController.addCoursToGroup);
/**
* @swagger
* /groups/{id}/users/{userId}:
* delete:
* summary: Remove a user from a group
* tags: [Groups]
* parameters:
* - in: path
* name: id
* required: true
* schema: { type: integer }
* - in: path
* name: userId
* required: true
* schema: { type: integer }
* responses:
* 204:
* description: Removed
*/
router.delete('/:id/users/:userId', groupController.removeUserFromGroup);
/**
* @swagger
* /groups/{id}/cours/{coursId}:
* delete:
* summary: Remove a cours from a group
* tags: [Groups]
* parameters:
* - in: path
* name: id
* required: true
* schema: { type: integer }
* - in: path
* name: coursId
* required: true
* schema: { type: integer }
* responses:
* 204:
* description: Removed
*/
router.delete('/:id/cours/:coursId', groupController.removeCoursFromGroup);
module.exports = router;