# Como desativar a paginação automática em Queries do AgilityFlow [disable(auto-pagination)]

## Visão Geral

Por padrão, o AgilityFlow aplica **paginação automática** nas queries para garantir performance e evitar sobrecarga na aplicação. No entanto, **desenvolvedores** podem optar por **desabilitar a paginação automática**, desde que sigam rigorosamente algumas **regras obrigatórias**.

Essa configuração é usada em cenários específicos como:

- Customização avançada de queries
- Tabelas filhas (Master x Detail)
- Queries para componentes como `AutoComplete`, `Listas dinâmicas`, `CustomDatatable`, entre outros

---

## Como desativar a paginação automática

Você deve **adicionar a seguinte tag no início da query**:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%5Bdisable%28auto-pagina"><div class="overflow-y-auto p-4" dir="ltr">`[disable(auto<span class="hljs-operator">-</span>pagination)]`</div></div>E também usar essas **tags obrigatórias no corpo da query**:

- `{{pagination-clause}}` → onde será injetado o `OFFSET ... LIMIT ...`
- `{{orderby}}` → onde será injetado o `ORDER BY`
- `{{pagination-column}}` → onde será injetada a coluna auxiliar `,0 as __result_count_total` para compatibilidade com aggregate

### Exemplo completo:<button class="flex items-center gap-1 py-1 select-none"></button>

```sql
[disable(auto-pagination)] 
SELECT 
  nome, email, created_at {{pagination-column}} 
FROM 
  tbl_xxxxx 
WHERE 
  deletado = false 
  {{orderby}} 
  {{pagination-clause}}
```

---

## Regras obrigatórias para queries com paginação desativada

Se você optar por **desativar a paginação**, deve:

<div class="_tableContainer_80l1q_1" id="bkmrk-regra-descri%C3%A7%C3%A3o-%E2%9C%85-in"><div class="_tableWrapper_80l1q_14 group flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="2655" data-start="1854" style="width: 100%; height: 239.037px;"><thead data-end="1875" data-start="1854"><tr data-end="1875" data-start="1854" style="height: 29.349px;"><th data-col-size="md" data-end="1862" data-start="1854" style="width: 64.5306%; height: 29.349px;">Regra</th><th data-col-size="md" data-end="1875" data-start="1862" style="width: 35.4032%; height: 29.349px;">Descrição</th></tr></thead><tbody data-end="2655" data-start="1898"><tr data-end="2045" data-start="1898" style="height: 46.1458px;"><td data-col-size="md" data-end="1991" data-start="1898" style="width: 64.5306%; height: 46.1458px;">✅ Incluir as tags `{{pagination-clause}}`, `{{orderby}}` e `{{pagination-column}` na query</td><td data-col-size="md" data-end="2045" data-start="1991" style="width: 35.4032%; height: 46.1458px;">Elas serão substituídas automaticamente no runtime</td></tr><tr data-end="2276" data-start="2166" style="height: 29.349px;"><td data-col-size="md" data-end="2239" data-start="2166" style="width: 64.5306%; height: 29.349px;">✅ Garantir que a query nunca retorne mais do que a configuração `page size` (qtd de registros esperado)</td><td data-col-size="md" data-end="2276" data-start="2239" style="width: 35.4032%; height: 29.349px;">O sistema lançará erro se exceder</td></tr><tr data-end="2360" data-start="2277" style="height: 29.349px;"><td data-col-size="md" data-end="2345" data-start="2277" style="width: 64.5306%; height: 29.349px;">✅ Adicionar `deletado = false` em **todas as tabelas** utilizadas</td><td data-col-size="md" data-end="2360" data-start="2345" style="width: 35.4032%; height: 29.349px;">Obrigatório</td></tr><tr data-end="2479" data-start="2361" style="height: 46.1458px;"><td data-col-size="md" data-end="2460" data-start="2361" style="width: 64.5306%; height: 46.1458px;">❌ Nunca usar `ORDER BY`, `LIMIT`, `OFFSET` diretamente na query sem `[disable(auto-pagination)]`</td><td data-col-size="md" data-end="2479" data-start="2460" style="width: 35.4032%; height: 46.1458px;">Vai lançar erro</td></tr><tr data-end="2655" data-start="2580" style="height: 29.349px;"><td data-col-size="md" data-end="2622" data-start="2580" style="width: 64.5306%; height: 29.349px;">❌ Não usar `INSERT`, `UPDATE`, `DELETE`</td><td data-col-size="md" data-end="2655" data-start="2622" style="width: 35.4032%; height: 29.349px;">Apenas SELECTs são permitidos</td></tr></tbody></table>

</div></div>## Validações adicionais feitas pelo sistema

Mesmo com a paginação desativada, a query será validada quanto a:

- **Segurança** (SQL Injection, funções perigosas)
- **Conformidade com naming** (sem colunas com espaços, acentos ou nomes reservados como `data`)
- **Volume de dados** (validação por `EXPLAIN`)
- **Tags obrigatórias ausentes**
- **Uso de parâmetros esperados (ex: `@master_id` em detail tables)**

<div class="_tableWrapper_80l1q_14 group flex w-fit flex-col-reverse" id="bkmrk--3" tabindex="-1"></div>