Pau Garcia -> Promotions catalogue
Fabriqué avec
- PHP8.1
- DDD
- Architecture hexagonale (ports et adaptateurs)
- CQRS
- Docker
- Test avec PHPUnit
Instructions principales
- Lancer les conteneurs Docker :
docker-compose up -d
- Lors de la première exécution, installez les dépendances :
docker-compose exec php-fpm bash
puis composer install
ITINÉRAIRES API
- http://localhost:33000/api/products-with-discounts (Tous les produits)
- http://localhost:33000/api/products-with-discounts?filterByCategory=boots (filtrer par catégorie)
ESSAIS
- Pour les tests de lancement,
docker-compose exec php-fpm bash
puis vendor/bin/phpunit --testdox
EXPLICATIONS SUR LES DÉCISIONS
- J'avais utilisé Symfony pour développer un simple produit API/remises, et la réponse de leur part est une liste de produits avec des remises appliquées.
- J'utilise un simple docker (serveur Web nginx / php-fpm / mongo) pour exécuter le projet.
- Je décide d'utiliser la base de données "en mémoire" simplement pour la fonctionnalité de cet exercice, mais dans le projet j'ai développé des référentiels Mongo, car dans l'exercice, dites "Vous devez prendre en compte tout ce que je décide d'utiliser la base de données "en mémoire" simplement pour la fonctionnalité. de cet exercice, mais dans le projet, j'ai développé des référentiels mongo, car dans l'exercice, dites "Vous devez tenir compte du fait que cette liste pourrait s'étendre jusqu'à contenir 20 000 produits." et mongoDB sera peut-être une bonne option dans cette possibilité. la liste pourrait s'étendre jusqu'à contenir 20 000 produits. et mongoDB sera peut-être une bonne option dans cette possibilité.
- J'avais créé toute la structure avec Hexagonal Architecture et DDD, avec cette technique séparez nos règles métier du reste du code.
- Un contexte de limite "Catalogue" à l'intérieur contient 3 entités (Product, ProductDiscount et ProductPriceSummary).
- J'avais utilisé le modèle CQRS dans nos cas d'utilisation (Commandes et Requêtes), cela nous aide à les tester.