CRUD com ORM — Dados sem SQL
Fundamentos do XanaScript • Aula 19 de 20
O ORM embutido (a keyword DB) te dá um banco de dados com validação de tipos, sem dependências. Declare um modelo e ganhe CRUD automático.
Declarando uma tabela
DB Usuario {
nome: eh-palavra,
idade: eh-numero,
email: eh-palavra
}O DB diz: "cria um armazenamento chamado Usuario, onde todo registro precisa ter esses campos com esses tipos".
Por que um ORM?
Sem ORM você escreveria SQL à mão, cuidaria de conexão, validação, backup. O ORM remove a cerimônia: declara o formato e usa. Os tipos declarados (eh-palavra, eh-numero) viram validação automática — inserir um valor de tipo errado é rejeitado na hora, com os campos inválidos listados.
CRUD completo
DB Usuario {
nome: eh-palavra,
idade: eh-numero,
email: eh-palavra
}
cria repo = Usuario
// CREATE
repo.bota-ai({ nome: "João", idade: 30, email: "[email protected]" })
repo.bota-ai({ nome: "Maria", idade: 25, email: "[email protected]" })
// READ (lista todos)
cria todos = repo.vê()
grita-ae(todos)
// READ (por id)
cria usuario = repo.acha(1)
grita-ae("Usuário 1:", usuario)
// UPDATE
repo.alterakkkk(1, { nome: "João Silva", idade: 31 })
// DELETE
repo.apaga-ae(3)
// FILTER
cria jovens = repo.achaOnde({ idade: 25 })
// COUNT
grita-ae("Total:", repo.quantos?())CRUD é o básico de todo sistema
Create (criar), Read (ler), Update (atualizar), Delete (apagar) — 90% das aplicações são CRUD sobre alguma coisa: usuários, produtos, pedidos, posts. Dominar esse padrão destrava tudo.
Métodos do DB
| Método | Descrição |
|---|---|
bota-ai(dados) |
insere; retorna com id e criadoEm |
vê() |
lista todos |
acha(id) |
busca por id (ou nulo) |
altera(id, mudancas) |
atualiza |
alterakkkk(id, mudancas) |
alias de altera |
apaga-ae(id) |
deleta |
achaOnde(filtro) |
filtra por campos |
select(campos) |
retorna só campos selecionados |
quantos?() |
conta registros |
limpar() |
apaga tudo |
Validação
Inserir tipo errado é rejeitado na hora:
repo.bota-ai({ nome: 123 }) // ERRO: nome precisa ser eh-palavraOnde os dados ficam?
Em .db/<modelo>.json no diretório do projeto — nada de servidor de banco pra configurar. Antes de cada save, um backup .bak é criado, com restauração automática se o arquivo corromper. Ou seja: seus dados não somem por um arquivo quebrado.
Exercício
Crie um CRUD de Produto com nome, preço e estoque. Insira 3 produtos, filtre por estoque: 10, atualize um, e imprima a contagem.