projet_fil_red_api/routes/users.js
2025-07-08 22:47:52 +02:00

138 lines
3 KiB
JavaScript

const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');
/**
* @swagger
* /users:
* get:
* summary: Get all users
* tags: [Users]
* responses:
* 200:
* description: List of users
*/
router.get('/', userController.getAllUsers);
/**
* @swagger
* /users/{id}:
* get:
* summary: Get user by ID
* tags: [Users]
* parameters:
* - in: path
* name: id
* schema: { type: integer }
* required: true
* responses:
* 200:
* description: User found
*/
router.get('/:id', userController.getUserById);
/**
* @swagger
* /users:
* post:
* summary: Create a new user
* tags: [Users]
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* first_name: { type: string }
* last_name: { type: string }
* email: { type: string }
* password_hash: { type: string }
* role: { type: string, enum: [student, admin] }
* responses:
* 201:
* description: User created
*/
router.post('/', userController.createUser);
/**
* @swagger
* /users/{id}:
* put:
* summary: Update a user
* tags: [Users]
* parameters:
* - in: path
* name: id
* schema: { type: integer }
* required: true
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* first_name: { type: string }
* last_name: { type: string }
* email: { type: string }
* password_hash: { type: string }
* role: { type: string }
* responses:
* 200:
* description: User updated
*/
router.put('/:id', userController.updateUser);
/**
* @swagger
* /users/{id}:
* delete:
* summary: Delete a user
* tags: [Users]
* parameters:
* - in: path
* name: id
* schema: { type: integer }
* required: true
* responses:
* 204:
* description: Deleted
*/
router.delete('/:id', userController.deleteUser);
/**
* @swagger
* /users/{id}/groups:
* get:
* summary: Get all groups for a user
* tags: [Users]
* parameters:
* - in: path
* name: id
* schema: { type: integer }
* required: true
* responses:
* 200:
* description: Groups list
*/
router.get('/:id/groups', userController.getUserGroups);
/**
* @swagger
* /users/{id}/cours:
* get:
* summary: Get all cours for a user
* tags: [Users]
* parameters:
* - in: path
* name: id
* schema: { type: integer }
* required: true
* responses:
* 200:
* description: Cours list
*/
router.get('/:id/cours', userController.getUserCours);
module.exports = router;