Rullst AcademyRullst Academy/Lección
Aplicaciones con Rullst I · Lección 09 / 14

Completar sin cambiar el objetivo

Una misión puede cambiar de posición; su id permanece.

Rutas de aprendizaje18 min

Vamos a descubrir juntos

  1. 1

    PUT /api/missions/{id}/completion recibe {"done":true} o false. Path extrae id y Completion exige bool. UPDATE incluye WHERE id = ?. Usar la posición visual cambiaría la misión equivocada tras reordenar.

  2. 2

    Asignar done=true dos veces mantiene true: el efecto sobre ese estado es idempotente. Alternar done = !done dos veces vuelve al inicio. La propiedad proviene del contrato implementado; escribir PUT no hace idempotente cualquier operación.

  3. 3

    La aplicación comprueba rows_affected. Un registro encontrado recibe 204 sin cuerpo; un id inexistente recibe 404 con error. No analices JSON de un 204: no hay contenido. Un fallo de almacenamiento es otra situación y recibe 503.

  4. 4

    El kit no resuelve edición simultánea entre personas. Si dos llamadas fijan estados distintos, prevalece la última escritura efectiva. Versiones de registro y control de concurrencia requieren profundización; declara esta limitación en la entrega.

Tu mesa de aplicaciones

El kit incluye la aplicación completa para investigar y modificar. El fragmento explica esta etapa; el editor contiene el archivo indicado. Rullst Academy no compila ni ejecuta este servidor en el navegador.

Archivo para estudiar y modificar

src/routes.rs

PUT /api/missions/1/completion
{"done":true}

UPDATE missions SET done = ? WHERE id = ?

Extrae el kit en una carpeta nueva y abre el terminal junto a Cargo.toml. Usa Rust 1.96+; la primera compilación puede descargar dependencias y tardar. Abre http://127.0.0.1:3010. Detén con Ctrl+C y ejecuta de nuevo tras editar.

cargo test --locked
cargo run --locked
Mis archivos y GitHub

Descarga tu borrador y sustituye el archivo indicado en tu copia extraída. El editor guarda un archivo en este navegador; tu cuenta guarda evaluaciones y XP. El ZIP excluye tus cambios. GitHub envía solo el archivo confirmado; usa Git manual para la aplicación entera, sin bases, respaldos ni secretos.

Enlaces oficiales y siguiente paso

✦
TU MISIÓN

Actualizar por id y distinguir asignación idempotente de alternancia.

Ahora te toca

Taller de descubrimientos

Decide antes de ejecutar

Actualizar por id y distinguir asignación idempotente de alternancia.
Prepara tus respuestas y comprueba cuando estés listo.
Una pausa para entender

¿Por qué el handler usa WHERE id = ?

Necesito una pista

Identificar el objetivo no autoriza a quien actúa. Aquí no hay cuentas; autorización es un tema posterior.

Cargando tu camino…

Llévatelo contigo

Repite la finalización en la prueba HTTP y comprueba estado y conteo. Después prueba reabrir con false. Explica con tus palabras la diferencia entre asignar y alternar.

A tu ritmo

Mis archivos y GitHub

Cada lección puede convertirse en un registro propio: código, notas o un plan de práctica. Guardar un archivo en GitHub es opcional y no cambia tus XP.

Manual del alumno

El editor y las descargas se abren cuando esta lección esté disponible para tu cuenta. Revisa el acceso indicado abajo o vuelve al mapa de la ruta.

Comprobando tu acceso a esta lección…

Rullstpetbot

La IA puede equivocarse. Consulta el material de la lección.