From 852fd3c19367dff79147490b7eaa9fd348d101a1 Mon Sep 17 00:00:00 2001 From: bosiraphael Date: Thu, 22 Feb 2024 16:11:48 +0100 Subject: [PATCH] use groupBy from lodash --- .../messaging/timeline-messaging.service.ts | 60 +++++++------------ 1 file changed, 20 insertions(+), 40 deletions(-) diff --git a/packages/twenty-server/src/core/messaging/timeline-messaging.service.ts b/packages/twenty-server/src/core/messaging/timeline-messaging.service.ts index 7a04baf7440..9f85a3a2a2e 100644 --- a/packages/twenty-server/src/core/messaging/timeline-messaging.service.ts +++ b/packages/twenty-server/src/core/messaging/timeline-messaging.service.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; +import groupBy from 'lodash.groupBy'; + import { TIMELINE_THREADS_DEFAULT_PAGE_SIZE } from 'src/core/messaging/constants/messaging.constants'; import { TimelineThreadsWithTotal } from 'src/core/messaging/dtos/timeline-threads-with-total.dto'; import { TypeORMService } from 'src/database/typeorm/typeorm.service'; @@ -93,7 +95,7 @@ export class TimelineMessagingService { }[] | undefined = await workspaceDataSource?.query( ` - SELECT * + SELECT id, subject FROM (SELECT message."messageThreadId" AS id, @@ -140,44 +142,22 @@ export class TimelineMessagingService { id: string; lastMessageReceivedAt: Date; lastMessageBody: string; - }; - } = messageThreads.reduce((messageThreadAcc, messageThread) => { - messageThreadAcc[messageThread.id] = messageThread; + }[]; + } = groupBy(messageThreads, 'id'); - return messageThreadAcc; - }, {}); + const subjectsByMessageThreadId: { + [key: string]: { + id: string; + subject: string; + }[]; + } = groupBy(threadSubjects, 'id'); - const subjectsByMessageThreadId: - | { - [key: string]: { - id: string; - subject: string; - }; - } - | undefined = threadSubjects?.reduce( - (threadSubjectAcc, threadSubject) => { - threadSubjectAcc[threadSubject.id] = threadSubject; - - return threadSubjectAcc; - }, - {}, - ); - - const numberOfMessagesByMessageThreadId: - | { - [key: string]: { - id: string; - numberOfMessagesInThread: number; - }; - } - | undefined = numberOfMessagesInThread?.reduce( - (numberOfMessagesAcc, numberOfMessages) => { - numberOfMessagesAcc[numberOfMessages.id] = numberOfMessages; - - return numberOfMessagesAcc; - }, - {}, - ); + const numberOfMessagesByMessageThreadId: { + [key: string]: { + id: string; + numberOfMessagesInThread: number; + }[]; + } = groupBy(numberOfMessagesInThread, 'id'); const threadMessagesFromActiveParticipants: | { @@ -377,13 +357,13 @@ export class TimelineMessagingService { ); } - const thread = messageThreadsByMessageThreadId[messageThreadId]; + const thread = messageThreadsByMessageThreadId[messageThreadId][0]; const threadSubject = - subjectsByMessageThreadId?.[messageThreadId].subject ?? ''; + subjectsByMessageThreadId?.[messageThreadId][0].subject ?? ''; const numberOfMessages = - numberOfMessagesByMessageThreadId?.[messageThreadId] + numberOfMessagesByMessageThreadId?.[messageThreadId][0] .numberOfMessagesInThread ?? 1; return {