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:
E também usar essas tags obrigatórias no corpo da query:
-
{{pagination-clause}}
→ onde será injetado oOFFSET ... LIMIT ...
-
{{orderby}}
→ onde será injetado oORDER BY
-
{{pagination-column}}
→ onde será injetada a coluna auxiliar,0 as __result_count_total
para compatibilidade com aggregate
Exemplo completo:
[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:
Regra | Descrição |
---|---|
✅ Incluir as tags {{pagination-clause}} , {{orderby}} e {{pagination-column} na query |
Elas serão substituídas automaticamente no runtime |
✅ Garantir que a query nunca retorne mais do que a configuração page size (qtd de registros esperado) |
O sistema lançará erro se exceder |
✅ Adicionar deletado = false em todas as tabelas utilizadas |
Obrigatório |
❌ Nunca usar ORDER BY , LIMIT , OFFSET diretamente na query sem [disable(auto-pagination)] |
Vai lançar erro |
❌ Não usar INSERT , UPDATE , DELETE |
Apenas SELECTs são permitidos |
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)