1.4 KiB
1.4 KiB
F-120 — Eliminar categorías (cascada)
Cambios
- Migración 041 (
041_category_delete_cascade.js):catalog_product_categories.category_id: FK deRESTRICT→CASCADE. Al borrar la categoría, se quitan sus enlaces de productos (los productos siguen existiendo).categories_categories.parent_id: FK deRESTRICT→CASCADE. Al borrar una categoría, sus hijas se borran en cascada.
src/modules/categories/application/category-use-cases.ts:DeleteCategory.executeya no consultahasChildren. La cascada se hace en la DB.DeleteCategoryResultsimplificado a'deleted' | 'not_found'.
src/modules/categories/api/categories.routes.ts:DELETE /categories/:idsolo devuelve 404 si no existe; ya no devuelve 409 conCATEGORY_HAS_CHILDREN.
Evidencia
npm run typecheckOK.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.