Files
mercadodevida/work/artifacts/F-120/implementer.md
2026-08-21 15:31:13 +02:00

1.4 KiB

F-120 — Eliminar categorías (cascada)

Cambios

  • Migración 041 (041_category_delete_cascade.js):
    • catalog_product_categories.category_id: FK de RESTRICTCASCADE. Al borrar la categoría, se quitan sus enlaces de productos (los productos siguen existiendo).
    • categories_categories.parent_id: FK de RESTRICTCASCADE. Al borrar una categoría, sus hijas se borran en cascada.
  • src/modules/categories/application/category-use-cases.ts:
    • DeleteCategory.execute ya no consulta hasChildren. La cascada se hace en la DB.
    • DeleteCategoryResult simplificado a 'deleted' | 'not_found'.
  • src/modules/categories/api/categories.routes.ts:
    • DELETE /categories/:id solo devuelve 404 si no existe; ya no devuelve 409 con CATEGORY_HAS_CHILDREN.

Evidencia

  • npm run typecheck OK.
  • npm test: 172 passed / 0 failed.
  • npm run db:status: migración 041 aplicada.
  • Smoke manual: ahora se puede borrar Aceites (borrará sus subcategorías y los enlaces a productos). Si tiene categorías de producto que mapean a categorías que no tienen padre, también se borran.

Notas

  • Es un delete destructivo. Si el admin borra una raíz, se va la raíz + todas las hijas en cascada. Esto es lo que el usuario pidió.
  • Los productos no se borran — sólo dejan de tener la categoría. Si quieres revertir, la migración down restaura los FKs a RESTRICT.