Backend · Dados
Paginação por Cursor
Paginação keyset com cursor opaco e assinado (HMAC) e trecho SQL parametrizado pronto. Listas de pedidos e logs rápidas em qualquer página, sem OFFSET e sem item repetido.
Paginação · SQL · Cursor · 8 testes automatizados · Licença MIT · Criado por FlowCore Soluções LTDA
Como instalar
- Funciona onde você já roda Node 18+, Cloudflare Workers, Deno, Bun, Vercel e Netlify Functions. Zero dependência: só fetch e Web Crypto, que já vêm no runtime.
- Crie src/lib/paginacao-cursor.ts Cole o código da aba Código.
- Use
const limite = normalizarLimite(url.searchParams.get("limite")); const cursor = url.searchParams.get("cursor"); const f = montarFiltroKeyset(cursor ? await decodificarCursor(cursor, env.CURSOR_SECRET) : null, { colunas: ["created_at", "id"] }); const linhas = await db.query(`SELECT * FROM pedidos ${f.sql ? "WHERE " + f.sql : ""} ORDER BY ${f.orderBy} LIMIT ${limite + 1}`, f.params); return Response.json(await montarPagina(linhas, limite, (p) => [p.created_at, p.id], env.CURSOR_SECRET)); - Rode o teste junto O arquivo de teste (aba Teste) cobre 8 cenários. Copie para src/lib/ ao lado e rode:
npm install -D vitest npx vitest run src/lib
Código no GitHub · Biblioteca de códigos