Legível por humanos
Sintaxe intuitiva semelhante a SQL para pessoas, além de árvore de consulta YAML/JSON simples (TugQT) para ferramentas — qualquer um pode inspecionar e editar.
TugQL é uma linguagem de consulta portátil e legível por humanos. Ela combina uma sintaxe de texto limpa semelhante a SQL com uma representação estruturada de árvore de consulta 1:1 e sem perdas (TugQT) serializada como YAML/JSON simples. Salve uma consulta, edite-a manualmente, veja o diff no controle de versão e execute-a entre backends sem perdas.
from users as u
select
u.name,
u.age as years
where
u.age >= 18
and (u.status in ('active', 'pending') or u.country == 'US')
order by
u.name,
u.age desc
limit 10
offset 20
TugQL transforma uma consulta em um documento compreensível e versionável que você pode armazenar, revisar e comparar — portátil em qualquer backend.
Sintaxe intuitiva semelhante a SQL para pessoas, além de árvore de consulta YAML/JSON simples (TugQT) para ferramentas — qualquer um pode inspecionar e editar.
A transformação canônica reconstrói consultas estruturalmente idênticas à origem. Nada é silenciosamente descartado ou aproximado.
Publicado com validação completa em JSON Schema (draft 2020-12). Qualquer ferramenta em qualquer linguagem pode validar consultas antes da execução.
Formatação canônica e serialização determinística da árvore. Consultas salvas geram diffs limpos no Git e são revisadas como código.
TugQL expõe funcionalidades portáteis entre plataformas: a mesma consulta executa sem alterações no Git, SQLite, PostgreSQL ou Firestore.
Um subconjunto portátil deliberadamente focado e bem definido. Recursos não portáteis são rejeitados explicitamente em vez de traduzidos de forma insegura.
Escreva na sintaxe de texto TugQL; armazene ou compartilhe como árvore de consulta estruturada TugQT.
Desenvolvedores escrevem consultas na sintaxe de texto do TugQL — legível, compacta e parecida com SQL. Por baixo, o parser produz o TugQT (Tug Query Tree), uma representação canônica legível por máquina.
Cada nó mapeia deterministicamente entre sintaxe e árvore. Erros de entrada ou violações de esquema retornam diagnósticos com localização precisa no código.
from:
name: users
columns:
- field: name
- field: age
as: years
where:
and:
- op: '>='
left:
field: age
right:
value: 18
- or:
- op: In
left:
field: status
right:
values:
- active
- pending
- op: ==
left:
field: country
right:
value: US
orderBy:
- field: name
- field: age
desc: true
limit: 10
offset: 20
Cada nó de consulta possui uma representação estruturada definida.
| Nó de consulta | Representação TugQT |
|---|---|
| From sobre uma coleção raiz | from: { name, alias? } |
| Coluna | item sob columns: — expressão com as: opcional |
| Comparação | { op, left, right } |
| Condição em grupo (And) | { and: [ … ] } |
| Condição em grupo (Or) | { or: [ … ] } |
| Expressão de ordenação | item sob orderBy: — expressão com desc: true opcional |
| Referência a campo | { field: <nome> } |
| Constante | { value: <escalar> } |
| Array | { values: [ <escalar>, … ] } |
| Operador | ==, In, >, >=, <, <= |
| Limit / Offset | limit: <int> / offset: <int> |
Uma expressão define exatamente um entre field, value ou values, identificando uma referência de campo, constante ou array.
Coleções individuais ou unidas, colunas selecionadas, expressões de filtro, ordenação e paginação. Tudo fora de escopo é rejeitado — nunca descartado em silêncio.
Fontes de coleção · colunas selecionadas · comparações e grupos And/Or · ordenação · limit / offset · joins · parâmetros. Expressões: campo, constante, array. Operadores: ==, !=, In, >, >=, <, <=, And, Or.
Joins cartesianos ilimitados · sintaxe proprietária específica de banco · operadores de mutação sem tipo fora do esquema. A serialização falha explicitamente para evitar perda semântica.
resolve(parse(text)) produz árvores determinísticas; a serialização é canônica para que consultas salvas mostrem diffs limpos entre versões.
O TugQL é a superfície de consulta portátil. Ele se integra a uma camada de abstração de dados (DALgo) que se adapta a qualquer armazenamento subjacente.
Como o TugQL expressa o subconjunto portátil, uma consulta escrita uma vez se comporta de forma idêntica tanto em um repositório Git (inGitDB), SQLite, PostgreSQL ou Firestore.
A linguagem é uma especificação aberta com esquema publicado e implementações em Go e TypeScript.
A especificação TugQL, o JSON Schema canônico (draft 2020-12) e documentos de exemplo validados. Anteriormente DTQL.
A biblioteca em Go: faça parse, valide, resolva, formate e execute consultas TugQL com garantias de ida e volta sem perdas.
DataTug ajuda desenvolvedores a explorar esquemas, criar e executar consultas e entender resultados. O trabalho com contratos de consulta usando TugQL e TugQT é contínuo. Conheça as ferramentas por trás do DataTug.
O TugQL torna uma consulta um artefato de primeira classe e auditável — legível por pessoas, validado por ferramentas e portátil entre plataformas.