niconunez96/delivery_service
Delivery service as part of an ecommerce microservice architecture (https://github.com/nmarsollier/ecommerce)
Flask application 🐍
Prueba de concepto de una aplicacion flask con DDD y event sourcing.
Documentacion 📜
Endpoints
- POST
/api/costumer_addresses/
Body
{
"country": "Argentina",
"city": "Buenos Aires",
"street": "Calle falsa",
"house_number": "1698",
"zip_code": 5501,
"user_id": "4"
}
- GET
/api/cosumer_addresses/user/:id/ - GET
/api/shipments/order/:id/ - GET
/api/shipments/:id/trip/ - POST
/api/shipments/:id/move/
Body
{
"country": "Argentina",
"city": "Mendoza",
"address": "Pedro molina"
}
- POST
/api/shipments/:id/deliver/
Eventos a consumir
- Order placed
- Exchange:
domain_events - Routing key:
order_placed - Body message: {"user_id": str, "order_id": str}
- Exchange:
Eventos despachados
- Shipment prepared
- Exchange:
domain_events - Routing key:
shipment_created
- Exchange:
- Shipment moved
- Exchange:
domain_events - Routing key:
shipment_moved
- Exchange:
- Shipment delivered
- Exchange:
domain_events - Routing key:
shipment_delivered
- Exchange:
Cómo correr la aplicación 🏃♂️
Se puede correr la aplicacion utilizando docker-compose o de forma local
Localmente
-
Si es la primera vez se debe crear un virtual environment:
python3 -m venv env -
Activar el entorno virtual
source ./env/bin/activate -
Instalar las dependencias
pip install -r requirements.txt -
Para correr la aplicacion localmente se debe crear una base de datos mongo con el nombre que desee y luego se debe editar las variables de entorno en el archivo
.env(No se deben pushear los cambios de este archivo), tambien tiene que estar corriendo rabbitmq 🐰 -
Correr el servidor con:
python server.py
Via docker-compose 🐳
-
Correr:
make runserver -
Para attacharse al servidor correr:
make server-logs -
Para finalizar los containers:
make stopserver -
Para ver los mensajes en rabbitmq se debe ingresar a
localhost:8080con las credencialesguest-guest