From 095754d1738663cdb497b947bebc8c82d4b42141 Mon Sep 17 00:00:00 2001 From: Leandro Santos Rocha Date: Mon, 21 Apr 2025 00:38:25 -0300 Subject: [PATCH] =?UTF-8?q?perf(api):=20otimiza=20pagina=C3=A7=C3=A3o=20em?= =?UTF-8?q?=20fetchChats=20usando=20LIMIT/OFFSET=20no=20SQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/services/channel.service.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/api/services/channel.service.ts b/src/api/services/channel.service.ts index d58997c6..52cebcc5 100644 --- a/src/api/services/channel.service.ts +++ b/src/api/services/channel.service.ts @@ -697,6 +697,9 @@ export class ChannelStartupService { AND "Message"."messageTimestamp" <= ${Math.floor(new Date(query.where.messageTimestamp.lte).getTime() / 1000)}` : Prisma.sql``; + const limit = query?.take ? Prisma.sql`LIMIT ${query.take}` : Prisma.sql``; + const offset = query?.skip ? Prisma.sql`OFFSET ${query.skip}` : Prisma.sql``; + const results = await this.prismaRepository.$queryRaw` WITH rankedMessages AS ( SELECT DISTINCT ON ("Message"."key"->>'remoteJid') @@ -732,7 +735,9 @@ export class ChannelStartupService { ORDER BY "Message"."key"->>'remoteJid', "Message"."messageTimestamp" DESC ) SELECT * FROM rankedMessages - ORDER BY "updatedAt" DESC NULLS LAST; + ORDER BY "updatedAt" DESC NULLS LAST + ${limit} + ${offset}; `; if (results && Array.isArray(results) && results.length > 0) {