codigo0/backend/src/infrastructure/http/routes/protocol.routes.ts
Javier 6c560de2bd
Some checks are pending
Deploy Código 0 / deploy (push) Waiting to run
feat: migrate protocols to MongoDB and implement admin list view
2026-03-25 11:59:07 +01:00

47 lines
1.5 KiB
TypeScript

import { Router } from 'express';
import { ProtocolController } from '../controllers/ProtocolController';
import { GetAllProtocolsUseCase } from '../../../application/usecases/GetAllProtocolsUseCase';
import { GetProtocolByIdUseCase } from '../../../application/usecases/GetProtocolByIdUseCase';
import { MongoProtocolRepository } from '../../persistence/MongoProtocolRepository';
// manual dependency injection for routes
const repository = new MongoProtocolRepository();
const getAllUseCase = new GetAllProtocolsUseCase(repository);
const getByIdUseCase = new GetProtocolByIdUseCase(repository);
const controller = new ProtocolController(getAllUseCase, getByIdUseCase);
const router = Router();
router.get('/', controller.getAll);
router.get('/:id', controller.getById);
// CRUD endpoints for Admin
router.post('/', async (req, res) => {
try {
await repository.save(req.body);
res.status(201).json({ message: 'Protocolo creado correctamente' });
} catch (error: any) {
res.status(500).json({ error: error.message });
}
});
router.put('/:id', async (req, res) => {
try {
await repository.save({ ...req.body, id: req.params.id });
res.json({ message: 'Protocolo actualizado correctamente' });
} catch (error: any) {
res.status(500).json({ error: error.message });
}
});
router.delete('/:id', async (req, res) => {
try {
await repository.delete(req.params.id);
res.json({ message: 'Protocolo eliminado correctamente' });
} catch (error: any) {
res.status(500).json({ error: error.message });
}
});
export default router;