From a817d62067472c3111feeea268e0fdc33fd19dea Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Thu, 16 Jan 2025 17:40:19 -0300 Subject: [PATCH] Enhance message filtering in ChannelStartupService to support timestamp range queries - Added support for filtering messages based on a timestamp range in the `ChannelStartupService`. - Introduced a `timestampFilter` object to handle `gte` and `lte` conditions for `messageTimestamp`. - Updated message count queries to include the new timestamp filtering logic. --- src/api/services/channel.service.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/api/services/channel.service.ts b/src/api/services/channel.service.ts index 6b71b4dc..e9d2e22d 100644 --- a/src/api/services/channel.service.ts +++ b/src/api/services/channel.service.ts @@ -551,12 +551,23 @@ export class ChannelStartupService { participants?: string; }; + const timestampFilter = {}; + if (query?.where?.messageTimestamp) { + if (query.where.messageTimestamp['gte'] && query.where.messageTimestamp['lte']) { + timestampFilter['messageTimestamp'] = { + gte: Math.floor(new Date(query.where.messageTimestamp['gte']).getTime() / 1000), + lte: Math.floor(new Date(query.where.messageTimestamp['lte']).getTime() / 1000), + }; + } + } + const count = await this.prismaRepository.message.count({ where: { instanceId: this.instanceId, id: query?.where?.id, source: query?.where?.source, messageType: query?.where?.messageType, + ...timestampFilter, AND: [ keyFilters?.id ? { key: { path: ['id'], equals: keyFilters?.id } } : {}, keyFilters?.fromMe ? { key: { path: ['fromMe'], equals: keyFilters?.fromMe } } : {}, @@ -580,6 +591,7 @@ export class ChannelStartupService { id: query?.where?.id, source: query?.where?.source, messageType: query?.where?.messageType, + ...timestampFilter, AND: [ keyFilters?.id ? { key: { path: ['id'], equals: keyFilters?.id } } : {}, keyFilters?.fromMe ? { key: { path: ['fromMe'], equals: keyFilters?.fromMe } } : {},