Pau García -> Promociones del catálogo
Hecho con
- PHP 8.1
- DDD
- Arquitectura Hexagonal (Puertos y Adaptadores)
- CQRS
- Estibador
- Pruebas con PHPUnit
Instrucciones principales
- Inicie contenedores acoplables:
docker-compose up -d
- En la primera ejecución, instale las dependencias:
docker-compose exec php-fpm bash
y luego composer install
RUTAS API
- http://localhost:33000/api/products-with-discounts (Todos los productos)
- http://localhost:33000/api/products-with-discounts?filterByCategory=boots (filtrar por categoría)
PRUEBAS
- Para pruebas de lanzamiento,
docker-compose exec php-fpm bash
y luego vendor/bin/phpunit --testdox
EXPLICACIONES SOBRE LAS DECISIONES
- Había utilizado Symfony para desarrollar un producto API simple/descuentos, y la respuesta de ellos es una lista de productos con descuentos aplicados.
- Utilizo una ventana acoplable simple (servidor web nginx/php-fpm/mongo) para ejecutar el proyecto.
- Decido usar la base de datos "en memoria" simplemente para la funcionalidad de este ejercicio, pero en el proyecto desarrollé repositorios Mongo, porque en el ejercicio dice "Debes tener en cuenta una". Decido usar la base de datos "en memoria" simplemente para la funcionalidad de este ejercicio, pero en el proyecto desarrollé repositorios mongo, porque en el ejercicio dice "Debes tener en cuenta que esta lista podría crecer hasta tener 20.000 productos" y mongoDB tal vez sea una buena opción en esta posibilidad. La lista podría crecer hasta tener 20.000 productos." y mongoDB tal vez sea una buena opción en esta posibilidad.
- Creé toda la estructura con Arquitectura Hexagonal y DDD, con esta técnica separo nuestras reglas de negocio con el resto del código.
- Un contexto delimitador "Catálogo" dentro de este tiene 3 entidades (Producto, ProductDiscount y ProductPriceSummary).
- Había usado el patrón CQRS en nuestros casos de uso (comandos y consultas), esto nos ayuda a probarlos.