feat(F-120): completed feature
This commit is contained in:
21
work/artifacts/F-120/implementer.md
Normal file
21
work/artifacts/F-120/implementer.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# F-120 — Eliminar categorías (cascada)
|
||||
|
||||
## Cambios
|
||||
- **Migración 041** (`041_category_delete_cascade.js`):
|
||||
- `catalog_product_categories.category_id`: FK de `RESTRICT` → `CASCADE`. Al borrar la categoría, se quitan sus enlaces de productos (los productos siguen existiendo).
|
||||
- `categories_categories.parent_id`: FK de `RESTRICT` → `CASCADE`. 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`.
|
||||
Reference in New Issue
Block a user