Apéndice C. Cambiar la infraestructura: Hazlo todo con CSV
Este apéndice pretende ser una pequeña ilustración de las ventajas de los patrones Repositorio, Unidad de Trabajo y Capa de Servicio. Está pensado como continuación del Capítulo 6.
Justo cuando terminamos de crear nuestra API de Flask y de prepararla para su lanzamiento, la empresa se dirige a nosotros disculpándose, diciendo que no están preparados para utilizar nuestra API y preguntando si podríamos crear algo que sólo leyera los lotes y los pedidos de un par de CSV y diera como resultado un tercer CSV con las asignaciones.
Normalmente, este es el tipo de cosas que harían que un equipo maldijera, escupiera y tomara notas para sus memorias. Pero nosotros no. No, nos hemos asegurado de que nuestros problemas de infraestructura estén bien desacoplados de nuestro modelo de dominio y capa de servicio. Cambiar a CSV será una simple cuestión de escribir un par de nuevas clases Repository
y UnitOfWork
, y entonces podremos reutilizartoda nuestra lógica de la capa de dominio y la capa de servicio.
Aquí tienes una prueba E2E para que veas cómo entran y salen los CSV:
Una primera prueba CSV (tests/e2e/test_csv.py)
def
test_cli_app_reads_csvs_with_batches_and_orders_and_outputs_allocations
(
make_csv
):
sku1
,
sku2
=
random_ref
(
's1'
),
random_ref
(
's2'
)
batch1
,
batch2
,
batch3
=
random_ref
(
'b1'
),
random_ref
(
'b2'
),
random_ref
(
'b3'
)
order_ref
=
random_ref
(
'o'
)
make_csv
(
'batches.csv'
,
[
[
'ref'
,
'sku'
,
'qty'
,
'eta'
],
[
batch1
,
sku1
,
100
Get Patrones de Arquitectura con Python now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.