INGENIAS-Pre-entrega2

API PRENDAS

Mobiliarios

Tabla de contenidos

Información General


La Api prendas, es un proyecto para Visualizar,Crear, Actualizar y Eliminar fácilmente prendas, con unas caracteristicas como codigo, nombre, precio y categoria. Su clave primaria es el ID de MongoDB

Link URL base


http://localhost:3009

Objeto Prendas


// ejemplo de la estructura de Prendas
 {   
    "codigo": 28,
    "nombre": "Vestido de Punto ",
    "precio": 300,
    "categoria": "Outfit"
  }

Peticiones


PETICION URL DESCRIPCION
GET /prendas Devuelve todos las prendas
GET /prendas/nombre Devuelve todas las prendas cargados con el nombre solicitada
POST /prendas Agregar una prenda
PUT /prendas/:id Modificar una prenda a partir del ObjetID
DELETE /prendas/:id Eliminar un producto pasandole el ObjetID

Métodos

Método PUT


Note

Este método va actualizar la prenda recibiendo el objetID y los campos del objeto a modificar en la base de datos, si se envia el _id en el json formado en el body la funcion lo elimina para que no haya conflicto al actualizar los datos.

// Endpoint PUT para modificar una prenda por su ID
app.put('/prendas/:id', async (req, res) => {
  const idPrenda = req.params.id;
  const prendaModificada = req.body;
  if (!prendaModificada || Object.keys(prendaModificada).length === 0) {
    return res.status(400).send('Error en el formato de los datos ingresados');
  }
 
  const client = await connectToMongodb();
  if (!client) {
      res.status(500).send('Error al conectarse a MongoDB')
      return;
  }
  
  const db = client.db('Prendas');
  const prendasCollection = db.collection('prendas');

  try {
    const result = await prendasCollection.updateOne(
      { _id: new ObjectId(idPrenda) }, // Crear una instancia de ObjectId
      { $set: prendaModificada }
    );

    if (result.matchedCount === 0) {
      return res.status(404).send('Prenda no encontrada');
    }

    console.log(`Se modificó correctamente la prenda con ID ${idPrenda}`);
    const mensaje = `Se modificó correctamente la prenda con ID ${idPrenda}`;
    res.status(200).json({ descripcion: mensaje, objeto: prendaModificada });
  } catch (err) {
    console.error(err);
    res.status(500).json({ descripcion: 'Error al actualizar la prenda', error: err });
  } finally {
    client.close();
  }
});

Metodo DELETE


Note

Este método elimina un producto mobiliario pasandole el ID en la base de datos

app.delete('/prendas/:id', async (req, res) => {
  const idPrenda = req.params.id;
  client = await connectToMongodb();
  if (!client) {
    res.status(500).send('Error al conectarse a MongoBD');
    return;
  };
  const db = client.db('Prendas');

  try {
    const resultado = await db.collection('prendas').deleteOne({ _id: new ObjectId(idPrenda) });

    if (resultado.deletedCount === 0) {
      res.status(404).send('No se encontro una prenda con _id: ' + idPrenda);
    } else {
      res.status(204).end();
    }
  } catch (error) {
    res.status(500).send('Error al eliminar la prenda, formato de id invalido');
  } finally {
    await disconnectFromMongodb();
  }
});

Archivo .ENV


PORT=3009
MONGODB_URLSTRING=mongodb+srv://admin:admin@cluster0.5dxhuuy.mongodb.net/?retryWrites=true&w=majority

Graficos

graph TD
  A[Inicio] --> B[Crear servidor Express]
  B --> C[Agregar los require necesarios]
  C --> D[Incluir las funciones deconectar y desconectar declaradas en src/mongodb.js]
  D --> E[Definir endpoint GET /prendas]
  D --> F[Definir endpoint PUT /prendas/:id]
  D --> G[Definir endpoint GET /prendas/nombre/:nombre]
  E --> I[Retornar todo el contenido]
  F --> J[Aplicar filtro por Id de ObjetKey]
  G --> K[Aplicar filtro por nombre de prenda]
Loading

Colaboradores


Carolina Mendez Antonella Mino