Chats filtering to support timestamp range queries

- Introduced a new `timestampFilter` to allow filtering messages based on `messageTimestamp` within specified `gte` and `lte` ranges.
- Updated SQL query logic in `ChannelStartupService` to incorporate the timestamp filtering, improving message retrieval accuracy.
This commit is contained in:
Davidson Gomes 2025-01-22 10:22:09 -03:00
parent ab5eb80edd
commit 666c0b514d
2 changed files with 10 additions and 1 deletions

View File

@ -3,7 +3,8 @@
### Features
* Retry system for send webhooks
* Enhance message filtering to support timestamp range queries
* Message filtering to support timestamp range queries
* Chats filtering to support timestamp range queries
### Fixed

View File

@ -682,6 +682,13 @@ export class ChannelStartupService {
where['remoteJid'] = remoteJid;
}
const timestampFilter =
query?.where?.messageTimestamp?.gte && query?.where?.messageTimestamp?.lte
? Prisma.sql`
AND "Message"."messageTimestamp" >= ${Math.floor(new Date(query.where.messageTimestamp.gte).getTime() / 1000)}
AND "Message"."messageTimestamp" <= ${Math.floor(new Date(query.where.messageTimestamp.lte).getTime() / 1000)}`
: Prisma.sql``;
const results = await this.prismaRepository.$queryRaw`
WITH rankedMessages AS (
SELECT DISTINCT ON ("Contact"."remoteJid")
@ -719,6 +726,7 @@ export class ChannelStartupService {
"Contact"."instanceId" = ${this.instanceId}
AND "Message"."instanceId" = ${this.instanceId}
${remoteJid ? Prisma.sql`AND "Contact"."remoteJid" = ${remoteJid}` : Prisma.sql``}
${timestampFilter}
ORDER BY
"Contact"."remoteJid",
"Message"."messageTimestamp" DESC