use groupBy from lodash
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user