From 6954472070bc004378e22424a89e12d0991af936 Mon Sep 17 00:00:00 2001 From: Gilberto Topanotti Junior Date: Fri, 18 Jul 2025 14:20:22 -0300 Subject: [PATCH] =?UTF-8?q?remove=20l=C3=B3gica=20de=20pagina=C3=A7=C3=A3o?= =?UTF-8?q?=20duplicada=20no=20fetchChats=20que=20causa=20resultados=20vaz?= =?UTF-8?q?ios=20quando=20skip=20>=200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problema: O método fetchChats estava aplicando a lógica de paginação duas vezes, causando resultados vazios ao usar o parâmetro skip com valores maiores que 0. Causa Raiz: A query SQL já aplica LIMIT e OFFSET corretamente O código JavaScript então aplica .slice(skip, skip + take) nos resultados já paginados Este "offset duplo" faz com que o slice tente acessar posições do array que não existem Exemplo do bug: Requisição: {"take": 10, "skip": 10} SQL: LIMIT 10 OFFSET 10 → retorna chats 11-20 (10 itens) JS: .slice(10, 20) → tenta pegar posições 10-20 de um array com apenas 10 itens Resultado: [] (array vazio) Solução: Removida a lógica de paginação JavaScript redundante (linhas 796-800) já que a query SQL já manipula a paginação corretamente com LIMIT e OFFSET. Arquivos Alterados: src/api/services/channel.service.ts Testes: ✅ {"take": 10, "skip": 0} - Retorna os primeiros 10 chats ✅ {"take": 10, "skip": 10} - Retorna chats 11-20 (anteriormente retornava []) ✅ {"take": 5, "skip": 15} - Retorna chats 16-20 (anteriormente retornava []) Impacto: Corrige a funcionalidade de paginação para todos os valores de skip > 0 Mantém compatibilidade com versões anteriores Sem mudanças que quebrem implementações existentes --- src/api/services/channel.service.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/api/services/channel.service.ts b/src/api/services/channel.service.ts index 0010b2ae..d804af7f 100644 --- a/src/api/services/channel.service.ts +++ b/src/api/services/channel.service.ts @@ -802,12 +802,6 @@ export class ChannelStartupService { }; }); - if (query?.take && query?.skip) { - const skip = query.skip || 0; - const take = query.take || 20; - return mappedResults.slice(skip, skip + take); - } - return mappedResults; }