Skip to content

Smejia11/franchise-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Franquicias API – Spring Boot

1. Resumen Stack

-Java 21 -Spring Boot 4 -Maven -MongoDB -Docker + Docker Compose

2. Ejecucion Local

Clonar proyecto

git clone https://github.com/Smejia11/franchise-api.git

Entra a la carpeta del proyecto:

cd franchise-api

Incluir archivo .env enviado por correo con la cadena de conexiĂłn a MongoDB Atlas. Como se ve en la imagen image


Ejecutar docker compose

docker compose up --build

3. Endpoints (RESTful)

URL-BASE

localhost:8080/v1

Crear franquicia

POST

 /franchises

Request body

{
    "name": "Franquicia 1"
}
curl --location 'localhost:8080/v1/franchises' \
--header 'Content-Type: application/json' \
--data '{
    "name": "Franquicia 1"
}'

Actualizar nombre de franquicia

PATCH

/franchises/{franchiseName}/update/name

Request body

{
    "name": "Franquicia 2"
}
curl --location --request PATCH 'localhost:8080/v1/franchises/Franquicia 1/update/name' \
--header 'Content-Type: application/json' \
--data '{
    "name": "Franquicia 2"
}'

Agregar sucursal a franquicia

POST

/franchises/{franchiseName}/branches
{
  "name": "Sucursal Norte"
}
curl --location 'localhost:8080/v1/franchises/Franquicia 1/branches' \
--header 'Content-Type: application/json' \
--data '{
  "name": "Sucursal Norte"
}'

Actualizar nombre de sucursal

PATCH

/franchises/{franchiseName}/branches/{branchName}/update/name
{
  "name": "Sucursal Sur"
}
curl --location --request PATCH 'localhost:8080/v1/franchises/Franquicia 2/branches/Sucursal buena/update/name' \
--header 'Content-Type: application/json' \
--data '{
    "name": "Sucursal Sur"
}'

Agregar producto a sucursal

POST

/franchises/{franchiseName}/branches/{branchName}/products
{
  "name": "Hamburguesa",
  "stock": 200
}
curl --location 'localhost:8080/v1/franchises/Franquicia 2/branches/Sucursal Sur/products' \
--header 'Content-Type: application/json' \
--data '{
  "name": "Hamburguesa",
  "stock": 200
}'

Actualizar nombre de producto

PATCH

/franchises/{franchiseName}/branches/{branchName}/products/{productName}/update/name
{
    "name":"Perro caliente"
}
curl --location --request PATCH 'localhost:8080/v1/franchises/Franquicia 2/branches/Sucursal Sur/products/Hamburguesa/update/name' \
--header 'Content-Type: application/json' \
--data '{
    "name":"Perro caliente"
}'

Eliminar producto de sucursal

DELETE

/franchises/{franchiseName}/branches/{branchName}/products/{productName}
curl --location --request DELETE 'localhost:8080/v1/franchises/Franquicia 2/branches/Sucursal Sur/products/Perro caliente'

Actualizar stock de producto

PATCH

/franchises/{franchiseName}/branches/{branchName}/products/{productName}/stock/{stock}
curl --location --request PATCH 'localhost:8080/v1/franchises/Franquicia 2/branches/Sucursal Norte/products/Hamburguesa/stock/3'

Producto con mayor stock por sucursal

GET

/franchises/{franchiseName}/branches/products/top
curl --location 'localhost:8080/v1/franchises/Franquicia 2/branches/products/top'

Respuestas

  • 201 Created
  • 204 No Content
  • 200 OK
  • 404 Not Found

Ejemplo de response para Producto con mayor stock por sucursal

  • 200 OK

Field Type Description
branch string Nombre de la sucursal a la que pertenece el producto
product string Nombre del producto con mayor stock
stock number Cantidad de stock disponible del producto

Example Response

[
  {
    "branch": "Sucursal Norte",
    "product": "Perros",
    "stock": 800
  }
]

TEST – Criterios de Aceptación


2. Exponer endpoint para agregar una nueva franquicia

Endpoint franquicia

MongoDB

MongoDB franquicia


3. Exponer endpoint para agregar una nueva sucursal a una franquicia

Endpoint sucursal

MongoDB

MongoDB sucursal


4. Exponer endpoint para agregar un nuevo producto a una sucursal

Endpoint producto

MongoDB

MongoDB producto


5. Exponer endpoint para eliminar un producto de una sucursal

Endpoint delete producto

MongoDB

MongoDB delete producto


6. Exponer endpoint para modificar el stock de un producto

Endpoint update stock

MongoDB

MongoDB update stock


7. Producto con mayor stock por sucursal para una franquicia

Endpoint top stock

MongoDB

MongoDB top stock


Plus: Endpoint para actualizar el nombre de una franquicia

Endpoint

Update franchise name endpoint

MongoDB

MongoDB update franchise name

Plus: Endpoint para actualizar el nombre de una sucursal

Endpoint

Update branch name endpoint

MongoDB

MongoDB update branch name

Plus: Endpoint para actualizar el nombre de un producto

Endpoint

Update product name endpoint

MongoDB

MongoDB update product name

About

API para manejar una lista de franquicias.

Resources

License

Stars

Watchers

Forks

Packages

No packages published