|
| 1 | +# NOTES |
| 2 | + |
| 3 | +## El plan |
| 4 | + |
| 5 | +El plan cubría dos archivos: agregar un helper `updateUser(id, { name, email })` |
| 6 | +en `db/store.js` (siguiendo la misma forma que `getUserById`/`createUser`, devolviendo |
| 7 | +`undefined` cuando el id no existe) y agregar `router.put("/:id", ...)` en |
| 8 | +`routes/users.js`, reutilizando el mismo patrón de validación 400 que ya usa |
| 9 | +`POST /` y el mismo patrón de 404 que ya usa `GET /:id`. También definía el orden |
| 10 | +entre validación y búsqueda: valida el body primero (400) antes de tocar el store, |
| 11 | +así el caso "body inválido + id inexistente" es determinístico. Aprobé el plan tal |
| 12 | +cual, sin ediciones — coincidía con lo que pedían los tests y con el estilo que ya |
| 13 | +tenía el resto de `routes/users.js`, así que no había nada que ajustar. |
| 14 | + |
| 15 | +## Modelo |
| 16 | + |
| 17 | +Usé Claude Sonnet 5. Es un cambio CRUD chico y bien acotado que reutiliza patrones |
| 18 | +que ya existen dos veces en el mismo archivo (`GET /:id` para el 404, `POST /` para |
| 19 | +el 400) — no requiere razonamiento profundo ni decisiones arquitectónicas, así que |
| 20 | +un modelo rápido y capaz alcanza sin necesidad de un modelo más pesado. |
| 21 | + |
| 22 | +## Commits |
| 23 | + |
| 24 | +Los separé en dos commits lógicos: |
| 25 | + |
| 26 | +1. `db/store.js` — el helper `updateUser` (la capa de datos). |
| 27 | +2. `routes/users.js` — la ruta `PUT /:id` que lo consume. |
| 28 | + |
| 29 | +La idea es que cada commit sea revisable por separado: el primero se entiende solo |
| 30 | +mirando cómo se comporta el store, el segundo se entiende solo mirando cómo la ruta |
| 31 | +usa ese store. (De hecho al principio los agregué juntos sin querer en un solo commit |
| 32 | +y el mensaje solo describía la mitad del diff — lo deshice con `git reset --soft` y |
| 33 | +los separé antes de seguir, ya que nada se había pusheado todavía.) |
| 34 | + |
| 35 | +## Qué encontró la revisión |
| 36 | + |
| 37 | +Antes de abrir el PR revisé el diff completo a mano y con `npm run lint`: |
| 38 | + |
| 39 | +- Un `id` no numérico en la URL (`Number("abc")` → `NaN`) no rompe nada: la |
| 40 | + comparación estricta en `getUserById` nunca matchea `NaN`, así que cae |
| 41 | + naturalmente en 404 sin necesitar un chequeo especial. |
| 42 | +- El body no puede pisar el `id` del usuario porque la ruta solo desestructura |
| 43 | + `name` y `email` del body; el `id` siempre viene del parámetro de la URL. |
| 44 | +- Confirmé que el orden validación-antes-que-store es el que pide el test de 400 |
| 45 | + (`PUT /users/1` con un campo faltante) sin necesidad de tocar el 404. |
| 46 | +- No agregué validación de formato de email (regex, etc.) porque `POST /` tampoco |
| 47 | + la tiene — mantener el mismo nivel de validación que el resto del recurso evita |
| 48 | + inconsistencias y no lo pedía ni el enunciado ni los tests. |
| 49 | +- `npm run lint` y `npm test` quedaron en verde sin cambios adicionales. |
0 commit comments