API REST desarrollada con Spring Boot para la gestión de una pizzería.
Esta aplicación permite manejar pizzas, pedidos y clientes, además de autenticación básica.
Ofrecer un servicio centralizado para la gestión de una pizzería, permitiendo crear, listar, actualizar y eliminar pizzas, gestionar pedidos y consultar información de clientes.
La aplicación maneja las siguientes entidades principales:
- Pizza: Representa una pizza con atributos como nombre, descripción, precio y disponibilidad.
- Order (Pedido): Representa un pedido realizado por un cliente, con detalles de fecha, resumen y estado.
- Customer (Cliente): Representa un cliente de la pizzería con atributos como teléfono e identificador.
- Auth: Maneja la autenticación de usuarios (login).
GET /api/pizzas→ Lista todas las pizzasGET /api/pizzas/{id}→ Obtiene una pizza por su idGET /api/pizzas/cheapest/{price}→ Lista pizzas más baratas que un precio dadoGET /api/pizzas/by-not-description/{description}→ Lista pizzas que no contienen cierta descripciónGET /api/pizzas/by-name/{name}→ Busca pizzas por nombreGET /api/pizzas/by-description/{description}→ Lista pizzas por descripciónGET /api/pizzas/available→ Lista pizzas disponiblesPOST /api/pizzas/add→ Agrega una nueva pizzaPUT /api/pizzas/update→ Actualiza los datos de una pizzaPUT /api/pizzas/update-price→ Actualiza solo el precio de una pizzaDELETE /api/pizzas/delete/{id}→ Elimina una pizza por id
GET /api/orders→ Lista todos los pedidosGET /api/orders/today→ Lista los pedidos del día actualGET /api/orders/summary/{id}→ Obtiene el resumen de un pedido por idGET /api/orders/outside→ Lista pedidos para entrega fuera del localGET /api/orders/customer/{idCustomer}→ Lista los pedidos de un cliente específico
GET /api/customers/phone/{phone}→ Busca un cliente por teléfonoGET /api/customers/customer/{idCustomer}→ Obtiene la información de un cliente por id
POST /api/auth/login→ Autenticación de usuarios
- Java 21
- Spring Boot
- Spring Data JPA
- MySQL
- Gradle
- Docker
- Swagger (documentación de la API)
src/main/java/com/pizzeria/
├── domain/ # Lógica de dominio (modelos, DTOs, excepciones, repositorios y servicios)
│ ├── dto/ # Clases DTO
│ ├── exception/ # Excepciones personalizadas
│ ├── repository/# Interfaces del dominio
│ └── service/ # Servicios de dominio
├── persistence/ # Capa de persistencia
│ ├── crud/ # Interfaces CRUD (JPA)
│ ├── entity/ # Entidades JPA
│ └── mapper/ # Mappers MapStruct
├── web/ # Capa web
│ ├── config/ # Configuraciones (Swagger, seguridad, etc.)
│ ├── controller/# Controladores REST
│ └── exception/ # Manejo global de errores- MySQL