Files
math2-platform/backend/src/modules/module/module.routes.ts
Renato bc43c9e772
Some checks failed
Test Suite / test-backend (push) Has been cancelled
Test Suite / test-frontend (push) Has been cancelled
Test Suite / e2e-tests (push) Has been cancelled
Test Suite / coverage-check (push) Has been cancelled
🎓 Initial commit: Math2 Platform - Plataforma de Álgebra Lineal PRO
 Características:
- 45 ejercicios universitarios (Basic → Advanced)
- Renderizado LaTeX profesional
- IA generativa (Z.ai/DashScope)
- Docker 9 servicios
- Tests 123/123 pasando
- Seguridad enterprise (JWT, XSS, Rate limiting)

🐳 Infraestructura:
- Next.js 14 + Node.js 20
- PostgreSQL 15 + Redis 7
- Docker Compose completo
- Nginx + SSL ready

📚 Documentación:
- 5 informes técnicos completos
- README profesional
- Scripts de deployment automatizados

Estado: Producción lista 
2026-03-31 11:27:11 -03:00

125 lines
3.2 KiB
TypeScript

/**
* Module Routes
*
* Route definitions for module endpoints
*/
import { Router } from 'express';
import { moduleController } from './module.controller';
import { authenticate } from '../../shared/middleware/auth.middleware';
const router = Router();
// All module routes require authentication except where noted
router.use(authenticate);
/**
* @route GET /api/modules
* @desc List all modules with optional filtering
* @query type - Filter by module type (FUNDAMENTOS, SISTEMAS_ESPACIOS, APLICACIONES)
* @query isPublished - Filter by published status (true/false)
* @query difficulty - Filter by difficulty level (BASIC, INTERMEDIATE, ADVANCED, EXPERT)
* @query search - Search in name and description
* @query page - Page number (default: 1)
* @query limit - Items per page (default: 50)
* @query sortBy - Sort field (default: order)
* @query sortOrder - Sort direction asc/desc (default: asc)
* @access Private
*/
router.get('/', moduleController.listModules.bind(moduleController));
/**
* @route GET /api/modules/type/:type
* @desc Get modules by type
* @param type - Module type (FUNDAMENTOS, SISTEMAS_ESPACIOS, APLICACIONES)
* @query page - Page number (default: 1)
* @query limit - Items per page (default: 50)
* @access Private
*/
router.get(
'/type/:type',
moduleController.getModulesByType.bind(moduleController)
);
/**
* @route GET /api/modules/:id
* @desc Get module by ID with optional includes
* @param id - Module ID
* @query includeExercises - Include exercises list (default: false)
* @query includeTopics - Include topics list (default: false)
* @query includeProgress - Include user progress (default: false)
* @access Private
*/
router.get(
'/:id',
moduleController.getModuleById.bind(moduleController)
);
/**
* @route GET /api/modules/:id/introduction
* @desc Get module introduction content
* @param id - Module ID
* @access Private
*/
router.get(
'/:id/introduction',
moduleController.getModuleIntroduction.bind(moduleController)
);
/**
* @route GET /api/modules/:id/examples
* @desc Get module examples with LaTeX formulas
* @param id - Module ID
* @access Private
*/
router.get(
'/:id/examples',
moduleController.getModuleExamples.bind(moduleController)
);
/**
* @route GET /api/modules/:id/sections
* @desc Get module exercise sections
* @param id - Module ID
* @access Private
*/
router.get(
'/:id/sections',
moduleController.getModuleExerciseSections.bind(moduleController)
);
/**
* @route GET /api/modules/:id/overview
* @desc Get module overview statistics
* @param id - Module ID
* @access Private
*/
router.get(
'/:id/overview',
moduleController.getModuleOverview.bind(moduleController)
);
/**
* @route GET /api/modules/:id/next
* @desc Get next module in sequence
* @param id - Current module ID
* @access Private
*/
router.get(
'/:id/next',
moduleController.getNextModule.bind(moduleController)
);
/**
* @route GET /api/modules/:id/previous
* @desc Get previous module in sequence
* @param id - Current module ID
* @access Private
*/
router.get(
'/:id/previous',
moduleController.getPreviousModule.bind(moduleController)
);
export default router;