Elegir espacio

Dos espacios

¿Qué quieres consultar?

Elige el espacio al que quieres entrar.

Biblioteca FastAPIPersistencia

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).

  • Escribir y ejecutar código
  • Implementación y diagnóstico SQL
  • Media
  • Apoyo ligero
  • Starter ejecutable

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

  1. Calcula a mano la página esperada del fixture y ejecuta ambas suites.
  2. Construye un statement base y aplica el filtro con atributos del modelo.
  3. Obtén el total filtrado antes de la ventana y añade un orden total mediante una allowlist.
  4. 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

  1. ¿El total describe toda la tabla, el conjunto filtrado o la página?
  2. ¿Qué desempate vuelve total el orden solicitado?
  3. ¿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.