Práctica focalizada · Bloque 4 · Unidad 4.2
EX-B4-05
Construir una ventana de consulta coherente
El listado de activos publica filtros, orden, offset y limit, pero ignora casi todos los parámetros y calcula total con len(items).
Cómo abordarla
Conserva intención al consultar y cambiar
Ejecuta primero el baseline. Después modifica la frontera indicada, escribe una regresión positiva y otra negativa y conserva la salida real.
Evidencia objetivo: Los ensayos separan la matriz omitido/null/valor de la ventana SQL con filtro, orden, count, limit y offset observables.
Abrir laboratorio de código
1. Descarga y arranca
- Starter de ventana incompletaAPI persistente con contrato público y baseline verdes; comportamiento y traza SQL exponen dos criterios inicialmente rojos.
2. Escribe y prueba
- Calcula a mano la página esperada del fixture y ejecuta ambas suites.
- Construye un statement base y aplica el filtro con atributos del modelo.
- Obtén el total filtrado antes de la ventana y añade un orden total mediante una allowlist.
- Aplica offset y limit en SQL, repite la traza y reconcilia cada cláusula con el body.
3. Demuestra el comportamiento
- Listado corregido y pruebas finales.
- Página prevista/observada y traza SELECT relevante.
- Explicación de la clave de desempate y del significado de total.
La respuesta principal es tu código y sus pruebas. Usa este espacio solo para anotar la predicción inicial y el resultado observado.
Predicción breve antes de ejecutar
¿En qué orden lógico aplicas filtros, count, orden total, offset y limit para que la respuesta y la traza cuenten la misma historia?
Consulta contractual
Con dos activos network y orden name desc, offset=1 y limit=1, la ventana contiene Router y total sigue siendo 2.Comprueba estas tres cosas
- ¿El total describe toda la tabla, el conjunto filtrado o la página?
- ¿Qué desempate vuelve total el orden solicitado?
- ¿Qué cláusulas deben aparecer realmente en SQL?
Anota predicción, comando ejecutado y diferencia observada; el código vive en tu workspace.
Sin respuesta guardada.
Pistas opcionales
Pista única · Dos statements, un predicado
- El count no necesita ORDER BY, OFFSET ni LIMIT.
- La consulta de items sí necesita orden total antes de recortar la ventana.
Profundización opcional
Construir filtro, orden allowlisted, total y ventana como una intención coherente y demostrarla tanto en HTTP como en el SQL ejecutado.
Contexto adicional
- Conserva el wrapper items/total/offset/limit y los límites públicos ya declarados.
- Solo name y category son claves de orden admitidas; no interpoles nombres recibidos por el cliente.
- No sustituyas el count por cargar todas las filas ni implementes cursores o búsqueda libre.
Decisiones abiertas
- Puedes construir el count desde el mismo predicado o factorizar una función pequeña; demuestra que ambos statements comparten filtros.
Cómo revisar tu respuesta
- Los cinco tests de continuidad y los dos criterios de consulta pasan.
- category filtra antes del count; total representa todas las coincidencias y no solo items.
- La ventana respeta offset y limit en SQL y nunca devuelve más filas que limit.
- El orden solicitado usa una allowlist y añade id como desempate determinista.
- La traza SELECT contiene WHERE, ORDER BY, LIMIT, OFFSET y una consulta COUNT coherente.
- Los parámetros inválidos conservan la validación 422 publicada por FastAPI.
Evidencia, revisión y reinicio
- Página esperada calculada antes del cambio.
- Comportamiento HTTP y traza SQL para filtro, orden total, count y ventana.
- Cinco pruebas de continuidad verdes y dos criterios focalizados inicialmente rojos.
Revisión: con Codex, utilizando la evidencia y los criterios anteriores; no se publica una solución oficial.
Reinicio: Volver a descomprimir ex-b4-05-query-window.zip y borrar solo el SQLite creado dentro del workspace temporal.