ORM (DB)

ORM embutido (DB)

O XanaScript tem ORM embutido com typesafety: declare um DB e ganhe CRUD automático, sem dependências.

Declarando uma tabela

js
DB Usuario {
  nome: eh-palavra,
  idade: eh-numero,
  email: eh-palavra
}

Os tipos de coluna aceitam eh-palavra, eh-numero, eh-booleano, eh-data, eh-qualquer (e variantes maiúsculas TEXTO, NUMERO, BOOLEANO, DATA, QUALQUER).

CRUD completo

js
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?())

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

As colunas são validadas contra o tipo declarado. Inserir um valor de tipo errado lista os campos inválidos.

Armazenamento

Os dados ficam em .db/<modelo>.json no diretório do projeto. Antes de cada save é criado um backup .bak, com restauração automática se o arquivo corromper.