use groupBy from lodash

This commit is contained in:
bosiraphael
2024-02-22 16:11:48 +01:00
parent 47092cd776
commit 852fd3c193
@@ -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 {