Projecto de NestJS. Este projecto es un servidor y base de datos. El servidor permite crear perdidos, actualizar su estado, consultar el estado actual entre otros. El servidor esta en el puerto 6666.
La base de datos se ubica en el port 5434, con usuario "postgres" y usa la contraseña 123.
Para correr el programa sigue estos pasos:
#En la terminal corre este comando para empezar el servidor
$ npm install
#Crea un archivo llamado .env y pon: DATABASE_URL="postgresql://postgres:123@localhost:5434/nest?schema=public"
#Luego corre este commando para inicializar la base de datos
$ docker compose up dv-db -d
#Para empezar prisma corre estos commandos:
npx prisma migrate dev --name init
#Para generar los Status originales en la base de datos corre:
npx ts-node prisma/seed.ts
#Para correr el servidor corre
npm run start:dev
#Opcionalmente, prisma te deja inspeccionar y editar tu base de datos, corre:
npx prisma studio
Los queries funcionan al añadirle un ? y las variables a ser alteradas al URL. En este proyecto, podemos usar createdAt, deletedAt y updatedAt. No es case sensitive. Las funciones que regresan mas de un objeto pueden ser alteradas por el query. Ademas, puedes usar variso queries a la vez para mayor especificidad. Para usar un query usa el formato: < variable >=< fecha >. Esta fecha puede ser YYYY-MM-DD o YYYY-MM o YYYY. El query filtrara los productos para solo mostros los que coinciden con esa fecha.
Este proyecto usa tablas intermedias para las relaciones entre objetos. Hay 5 tablas, Orden - Producto, Orden - Estado, Orden - Estado Previo, Producto - Estado y Categoria - Producto.
Aca dejo una lista de los requests posibles:
POST /product/new
body:
{
"name": "Nuevo Producto",
"categories": ["Electronico","Salud"]
}
Este request creara un nuevo producto. En el body pon el nombre del producto y las categorias a las que pertence como en el formato mostrado en el ejemplo.
GET /product/:nombre
Este request te dara el estado del producto que pediste. Pon el nombre del producto en el url.
PATCH /product/updatestatus/:nombre
body:
{
"status": "INSTOCK"
}
Este request te dejara cambiar el status del producto. Pon el nombre del producto en el url y el nuevo status en el body.
PATCH /order/addcategory/:nombre
body:
{
"category": "Comida"
}
Este request añadira una categoria a el producto. Pon el nombre del producto en el url y la categoria en el body.
DELETE /product/delete/:nombre
Este request borrara el producto de la base de datos. Pon el nombre del producto en el url.
GET /product/available Este request regrasara todos los productos con el estado INSTOCK.
GET /product/all Este request regresara todos los productos no borrados.
POST /category/new
body:
{
"name": "Categoria",
"description": "Nueva categoria"
}
Este request creara una nuevo categoria. En el body pon el nombre de la categoria y una descripcion.
GET /category/:nombre
Este request te dara los productos asociados a esta categoria. Pon el nombre de la categoria en el url.
DELETE /category/delete/:nombre
Este request borrara la categoria de la base de datos. Pon el nombre de la categoria en el url.
GET /category/all
Este request devolvera todas las categorias no borradas.
POST /order/new
body:
{
"products": ["Papa","Tomate","Manzana"]
"description": "Un nuevo pedido"
}
Este request creara una nueva orden. En el body pon los productos como en el formato mostrado en el ejemplo y una descripcion.
GET /order/:id
Este request te dara tu objeto de orden. Pon el id de la orden en el url.
PATCH /order/updatestatus/:id
body:
{
"status": "PROCESSING"
}
Este request te dejara cambiar el status de la orden. Pon el id de la orden en el url y el nuevo status en el body.
DELETE /order/delete/:id
Este request borrara la orden de la base de datos. Pon el id de la orden en el url.
POST /productstate/new
body:
{
"name": "LIMITED"
}
Este request creara un nuevo Product Status. Pon el nombre en el body.
GET /productstate/get
Este request devolvera todos los Product Status que hay.
DELETE /productstate/delete:nombre
Este request borrara el estado de la base de datos. Pon el id del estado en el url.
POST /orderstate/new
body:
{
"name": "CANCELLED"
}
Este request creara un nuevo Order Status. Pon el nombre en el body.
GET /state/get
Este request devolvera todos los tipos de Order Status que hay.
DELETE /orderstate/delete:nombre
Este request borrara el estado de la base de datos. Pon el id del estado en el url.