Skip to content

Commit fc879a9

Browse files
committed
Add NOTES.md documenting plan, model, commits, and review
1 parent 5627e80 commit fc879a9

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

NOTES.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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

Comments
 (0)