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

Persistência: guardar com regras

Uma missão precisa sobreviver ao fim do processo.

Trilhas de aprendizado18 min

Vamos descobrir juntos

  1. 1

    Store abre uma conexão SQLite e executa schema.sql. A tabela STRICT exige tipos compatíveis; NOT NULL e CHECK reforçam regras. INTEGER PRIMARY KEY identifica cada missão, enquanto done aceita somente 0 ou 1. Um título não é identidade: duas missões podem ter o mesmo nome.

  2. 2

    A aplicação usa uma conexão para manter o laboratório pequeno. Consulta parametrizada e restrição do banco se complementam com a validação Rust. Nem tudo está duplicado no CHECK: por exemplo, caracteres de controle são rejeitados pela camada Rust. Inspecione cada regra em vez de presumir equivalência.

  3. 3

    Crie três missões, encerre com Ctrl+C e execute novamente na mesma pasta. A lista deve voltar. O teste usa :memory: para casos isolados; nesse modo, fechar a conexão perde os dados. Persistência em arquivo e banco de teste em memória têm objetivos diferentes.

  4. 4

    PRAGMA user_version registra esquema 1. O kit recusa versões superiores, mas não implementa uma plataforma completa de migração. CREATE TABLE IF NOT EXISTS só cria o que falta: mudar schema.sql não transforma tabelas antigas. Planeje migração e backup antes de evoluir dados existentes.

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

schema.sql

CREATE TABLE missions (
  id INTEGER PRIMARY KEY,
  title TEXT NOT NULL CHECK(length(trim(title)) BETWEEN 1 AND 80),
  priority INTEGER NOT NULL CHECK(priority BETWEEN 1 AND 3),
  done INTEGER NOT NULL DEFAULT 0 CHECK(done IN (0,1))
) STRICT;

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

Explicar esquema, arquivo e restrições; verificar dados após reiniciar.

Agora é a sua vez

Oficina de descobertas

Decida antes de executar

Explicar esquema, arquivo e restrições; verificar dados após reiniciar.
Monte suas respostas e confira quando estiver pronto.
Uma pausa para entender

O que ajuda a distinguir duas missões chamadas Orbit?

Preciso de uma pista

A ordem pode mudar; o id permite direcionar uma alteração ao registro certo.

Carregando sua jornada…

Leve com você

Compare um teste em memória com execução em arquivo. Registre onde o arquivo está e quais regras pertencem a Rust e SQL. Experimente uma restrição inválida somente num banco novo de teste.

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.