FwPaginator
Paginacao de resultados. Suporta cursor-based e offset-based. Indispensavel em listas REST.
Assinatura: oPag := FwPaginator():New(oQuery, nLimit) / :page(n)
Retorna: FwPaginator
Paginacao centralizada — voce passa query, define tamanho de pagina, framework cuida.
// Em endpoint REST
@Get("/api/v1/clientes")
function ListaClientes()
Local nPagina := Val(oRequest:getQueryParam("page"))
Local nLimit := Val(oRequest:getQueryParam("limit"))
If nLimit == 0 ; nLimit := 20 ; EndIf
Local oPag := FwPaginator():New("SELECT * FROM " + RetSqlName("SA1"), nLimit)
Local oResultado := oPag:page(nPagina)
Local oRet := JsonObject():New()
oRet["data"] := oResultado:items
oRet["total"] := oResultado:total
oRet["page"] := nPagina
oRet["totalPages"] := oResultado:totalPages
Return oRet:ToJson()
return
Pegadinhas
- Offset-based em tabela gigante e lento — prefira cursor-based.
- Total count pode ser caro — considere "tem proxima pagina?" em vez de count total.