Skip to main content

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:

[disable(auto-pagination)]

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:

[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)