159 lines
5.5 KiB
JavaScript
159 lines
5.5 KiB
JavaScript
const express = require('express');
|
|
const YAML = require('yamljs');
|
|
const swaggerUi = require('swagger-ui-express');
|
|
const openApiDocument = YAML.load('./openapi.yaml');
|
|
|
|
const app = express();
|
|
app.use(express.json());
|
|
|
|
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(openApiDocument));
|
|
|
|
const usuarios = [];
|
|
const medicos = [];
|
|
const pacientes = [];
|
|
const recetas = [];
|
|
const historiales = [];
|
|
|
|
//raiz
|
|
app.get('/', (req, res) => {
|
|
//endopoint para ir a la interfaz grafica
|
|
res.send('Bienvenido a la API de MezontleTeam. Visita /api-docs para ver la documentación interactiva.');
|
|
});
|
|
|
|
//funciones auxiliares para buscar y el manejo de datos
|
|
const findById = (array, id) => array.find(item => item.id === id);
|
|
const deleteById = (array, id) => {
|
|
const index = array.findIndex(item => item.id === id);
|
|
if (index !== -1) array.splice(index, 1);
|
|
};
|
|
|
|
//endpoints de suario
|
|
app.get('/usuario', (req, res) => res.json(usuarios));
|
|
app.post('/usuario', (req, res) => {
|
|
const nuevoUsuario = req.body;
|
|
nuevoUsuario.idUsuario = usuarios.length + 1;
|
|
usuarios.push(nuevoUsuario);
|
|
res.status(201).json(nuevoUsuario);
|
|
});
|
|
app.get('/usuario/:idUsuario', (req, res) => {
|
|
const usuario = findById(usuarios, parseInt(req.params.idUsuario));
|
|
usuario ? res.json(usuario) : res.status(404).send('Usuario no encontrado');
|
|
});
|
|
app.put('/usuario/:idUsuario', (req, res) => {
|
|
const index = usuarios.findIndex(u => u.idUsuario == req.params.idUsuario);
|
|
if (index !== -1) {
|
|
usuarios[index] = req.body;
|
|
usuarios[index].idUsuario = parseInt(req.params.idUsuario, 10);
|
|
res.json(usuarios[index]);
|
|
} else res.status(404).send('Usuario no encontrado');
|
|
});
|
|
app.delete('/usuario/:idUsuario', (req, res) => {
|
|
deleteById(usuarios, parseInt(req.params.idUsuario));
|
|
res.status(204).send();
|
|
});
|
|
|
|
//endpoints de medico
|
|
app.get('/medico', (req, res) => res.json(medicos));
|
|
app.post('/medico', (req, res) => {
|
|
const nuevoMedico = req.body;
|
|
nuevoMedico.medId = medicos.length + 1;
|
|
medicos.push(nuevoMedico);
|
|
res.status(201).json(nuevoMedico);
|
|
});
|
|
app.get('/medico/:medId', (req, res) => {
|
|
const medico = findById(medicos, parseInt(req.params.medId));
|
|
medico ? res.json(medico) : res.status(404).send('Medico no encontrado');
|
|
});
|
|
app.put('/medico/:medId', (req, res) => {
|
|
const index = medicos.findIndex(m => m.medId == req.params.medId);
|
|
if (index !== -1) {
|
|
medicos[index] = req.body;
|
|
medicos[index].medId = parseInt(req.params.medId, 10);
|
|
res.json(medicos[index]);
|
|
} else res.status(404).send('Medico no encontrado');
|
|
});
|
|
app.delete('/medico/:medId', (req, res) => {
|
|
deleteById(medicos, parseInt(req.params.medId));
|
|
res.status(204).send();
|
|
});
|
|
|
|
//endpoints de paciente
|
|
app.get('/paciente', (req, res) => res.json(pacientes));
|
|
app.post('/paciente', (req, res) => {
|
|
const nuevoPaciente = req.body;
|
|
nuevoPaciente.idPac = pacientes.length + 1;
|
|
pacientes.push(nuevoPaciente);
|
|
res.status(201).json(nuevoPaciente);
|
|
});
|
|
app.get('/paciente/:idPac', (req, res) => {
|
|
const paciente = findById(pacientes, parseInt(req.params.idPac));
|
|
paciente ? res.json(paciente) : res.status(404).send('Paciente no encontrado');
|
|
});
|
|
app.put('/paciente/:idPac', (req, res) => {
|
|
const index = pacientes.findIndex(p => p.idPac == req.params.idPac);
|
|
if (index !== -1) {
|
|
pacientes[index] = req.body;
|
|
pacientes[index].idPac = parseInt(req.params.idPac, 10);
|
|
res.json(pacientes[index]);
|
|
} else res.status(404).send('Paciente no encontrado');
|
|
});
|
|
app.delete('/paciente/:idPac', (req, res) => {
|
|
deleteById(pacientes, parseInt(req.params.idPac));
|
|
res.status(204).send();
|
|
});
|
|
|
|
//endpoints de receta
|
|
app.get('/receta', (req, res) => res.json(recetas));
|
|
app.post('/receta', (req, res) => {
|
|
const nuevaReceta = req.body;
|
|
nuevaReceta.idRec = recetas.length + 1;
|
|
recetas.push(nuevaReceta);
|
|
res.status(201).json(nuevaReceta);
|
|
});
|
|
app.get('/receta/:idRec', (req, res) => {
|
|
const receta = findById(recetas, parseInt(req.params.idRec));
|
|
receta ? res.json(receta) : res.status(404).send('Receta no encontrada');
|
|
});
|
|
app.put('/receta/:idRec', (req, res) => {
|
|
const index = recetas.findIndex(r => r.idRec == req.params.idRec);
|
|
if (index !== -1) {
|
|
recetas[index] = req.body;
|
|
recetas[index].idRec = parseInt(req.params.idRec, 10);
|
|
res.json(recetas[index]);
|
|
} else res.status(404).send('Receta no encontrada');
|
|
});
|
|
app.delete('/receta/:idRec', (req, res) => {
|
|
deleteById(recetas, parseInt(req.params.idRec));
|
|
res.status(204).send();
|
|
});
|
|
|
|
//endpoints de historial
|
|
app.get('/historial', (req, res) => res.json(historiales));
|
|
app.post('/historial', (req, res) => {
|
|
const nuevoHistorial = req.body;
|
|
nuevoHistorial.idHistorial = historiales.length + 1;
|
|
historiales.push(nuevoHistorial);
|
|
res.status(201).json(nuevoHistorial);
|
|
});
|
|
app.get('/historial/:idHistorial', (req, res) => {
|
|
const historial = findById(historiales, parseInt(req.params.idHistorial));
|
|
historial ? res.json(historial) : res.status(404).send('Historial no encontrado');
|
|
});
|
|
app.put('/historial/:idHistorial', (req, res) => {
|
|
const index = historiales.findIndex(h => h.idHistorial == req.params.idHistorial);
|
|
if (index !== -1) {
|
|
historiales[index] = req.body;
|
|
historiales[index].idHistorial = parseInt(req.params.idHistorial, 10);
|
|
res.json(historiales[index]);
|
|
} else res.status(404).send('Historial no encontrado');
|
|
});
|
|
app.delete('/historial/:idHistorial', (req, res) => {
|
|
deleteById(historiales, parseInt(req.params.idHistorial));
|
|
res.status(204).send();
|
|
});
|
|
|
|
const PORT = process.env.PORT || 8080;
|
|
app.listen(PORT, () => {
|
|
console.log(`Servidor corriendo en http://localhost:${PORT}`);
|
|
});
|