Rullst AcademyRullst Academy/Lição
Aplicações com Rullst I · Lição 09 / 14

Concluir sem trocar o alvo

A missão pode mudar de posição; seu id permanece.

Trilhas de aprendizado18 min

Vamos descobrir juntos

  1. 1

    A rota PUT /api/missions/{id}/completion recebe {"done":true} ou false. Path extrai o id e Completion exige bool. A consulta UPDATE inclui WHERE id = ?. Usar a posição da linha na tela alteraria a missão errada após uma reordenação.

  2. 2

    Definir done=true duas vezes mantém true: o efeito sobre esse estado é idempotente. Alternar done = !done duas vezes voltaria ao começo. A propriedade vem do contrato implementado; escrever PUT no nome não torna qualquer operação idempotente.

  3. 3

    A aplicação verifica rows_affected. Registro encontrado recebe 204 sem corpo; id inexistente recebe 404 com erro. Não tente ler JSON de uma resposta 204: não há conteúdo para analisar. Uma falha de armazenamento é outra situação e recebe 503.

  4. 4

    O kit não resolve edição simultânea entre pessoas. Se duas chamadas definirem estados diferentes, a última gravação efetiva prevalece. Versões de registro e controle de concorrência são aprofundamentos; esta limitação deve ficar explícita na entrega.

Sua bancada de aplicações

O kit inclui o aplicativo completo para investigar e modificar. O trecho abaixo explica esta etapa; o editor contém o arquivo indicado. A Rullst Academy não compila nem executa esse servidor no navegador.

Arquivo para estudar e modificar

src/routes.rs

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

UPDATE missions SET done = ? WHERE id = ?

Extraia o kit numa pasta nova e abra o terminal junto a Cargo.toml. Use Rust 1.96+; o primeiro build pode baixar dependências e demorar. Depois abra http://127.0.0.1:3010. Pare com Ctrl+C e execute novamente após editar.

cargo test --locked
cargo run --locked
Meus arquivos e GitHub

Baixe seu rascunho e substitua o arquivo indicado na sua cópia extraída. O editor guarda um arquivo neste navegador; a conta guarda avaliações e XP. O ZIP não contém suas alterações. GitHub envia só o arquivo confirmado; para o aplicativo completo use Git manual, sem bancos, backups ou segredos.

Links oficiais e próximo passo

✦
SUA MISSÃO

Atualizar por id e distinguir atribuição idempotente de alternância.

Agora é a sua vez

Oficina de descobertas

Decida antes de executar

Atualizar por id e distinguir atribuição idempotente de alternância.
Monte suas respostas e confira quando estiver pronto.
Uma pausa para entender

Por que o handler usa WHERE id = ?

Preciso de uma pista

Identificar o alvo não autoriza quem faz a ação. Aqui não há contas; autorização será um tema posterior.

Carregando sua jornada…

Leve com você

No teste HTTP, repita uma conclusão e confira estado e contagem. Depois teste reabrir com false. Explique em palavras próprias a diferença entre definir e alternar.

No seu ritmo

Meus arquivos e GitHub

Toda lição pode virar um registro seu: código, anotações ou um plano de prática. Guardar um arquivo no GitHub é opcional e não altera seu XP.

Manual do aluno

O editor e os downloads abrem quando esta lição estiver liberada para sua conta. Confira o acesso abaixo ou volte ao mapa da trilha.

Conferindo seu acesso à lição…

Rullstpetbot

A IA pode errar. Confira no material da lição.