Skip to content

francoisgaston/SQL_NoSQL_API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TPO Bases de datos 2

Integrantes

Ejecución

El proyecto utiliza varios contenedores de docker, y se utiliza docker compose para sincronizarlos
Para levantar los contenedores, ubicarse en el directorio con el proyecto descargado y ejecutar

docker compose up 

Por default, la primera creación

  • Crea la imagen de node necesaria para correr la API
  • Crea los contenedores de node, mongo y postgres
  • Crea los volúmenes necesarios para cada contenedor
  • Popula la base de datos de Postgres con los datos provistos por la cátedra

En otros casos, sólo levanta los contendores creados

Migración

Para migar los datos de Postgres a Mongo, incluyendo datos iniciales y los agregados mediante la API, se provee el script pgToMongo.sh en el directorio /scripts
Para ejecutarlo, se deben mantener los contenedores corriendo como en cualquier ejecución y correr

./pgToMongo.sh .env 

Luego, para cambiar la base de datos que utiliza la API, se debe modificar la variable DBMS el archivo .env ubicado en la raíz del proyecto

DBMS=postgres/mongo

Luego, se deben volver a levantar los contenedores para que impacten los cambios en las variables de entorno

Configuración

Para evitar problemas dependiendo del entorno de ejecutción, se proveen variables que se pueden modificar en el archivo .env en la raíz del proyecto
Los cambios en este archivo deben realizarse antes de crear los contenedores

Eliminación

Si se desea eliminar los contenedores, junto con los volúmenes asociados a los mismos, ejecutar

docker compose down -v --rmi local

API

A continuación, se provee documentación acerca de los diferentes endpoints que provee la API. Por default, esta corre en el puerto 8000

Crear un cliente

Se provee el endpoint

/client

En el body del request se deben enviar los datos del cliente, donde el nro_cliente se deteremina automáticamente

{
    "nombre":"<nombre del cliente>",
    "apellido": "<apellido del cliente>",
    "direccion": "<dirección del cliente>",
    "activo": <valor de activo>
}

Actualizar un cliente

Se provee el endpoint

/client/:nro_cliente

Donde nro_cliente es el id del cliente generado en la inserción. Se pueden actualizar todos los campos que se utilizan en la creación, y si no se especifica alguno entonces no se cambia

{
    "nombre":"<nombre del cliente>",
    "apellido": "<apellido del cliente>",
    "direccion": "<dirección del cliente>",
    "activo": <valor de activo>
}

Eliminar un cliente

Se provee el endpoint

/client/:nro_cliente

Donde nro_cliente es el id del cliente que se desea eliminar

Obtener un cliente

Se provee el endpoint

/client/:nro_cliente

Donde nro_cliente es el id del cliente que se desea utilizar. Cabe mencionar que cuando se utiliza mongo, en la respuesta el campo que lo identifica es _id y no nro_cliente, pero el valor es el mismo para los campos importados en la migración.

Crear un producto

Se provee el endpoint

/products

En el body del request se deben enviar los datos del producto, donde el codigo_producto se deteremina automáticamente

{
    "marca": "<marca del producto>",
    "nombre": "<nombre del producto>",
    "descripcion": "<descripción del producto>",
    "precio": <precio del producto>,
    "stock": <cantidad en stock del producto>
}

Actualizar un producto

Se provee el endpoint

/products/:codigo_producto

Donde codigo_producto es el id del cliente generado en la inserción. Se pueden actualizar todos los campos que se utilizan en la creación, y si no se especifica alguno entonces no se cambia

{
    "marca": "<marca del producto>",
    "nombre": "<nombre del producto>",
    "descripcion": "<descripción del producto>",
    "precio": <precio del producto>,
    "stock": <cantidad en stock del producto>
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •