21 lines
805 B
TypeScript
21 lines
805 B
TypeScript
import { DataSource, MoreThan } from 'typeorm';
|
|
import { MessageEntity } from '../../../entities';
|
|
import { GetMessagesSinceQuery } from '../../types';
|
|
import { rowToMessage } from '../../mappers';
|
|
import { loadMessageReactionsMap } from '../../relations';
|
|
|
|
export async function handleGetMessagesSince(query: GetMessagesSinceQuery, dataSource: DataSource) {
|
|
const repo = dataSource.getRepository(MessageEntity);
|
|
const { roomId, sinceTimestamp } = query.payload;
|
|
const rows = await repo.find({
|
|
where: {
|
|
roomId,
|
|
timestamp: MoreThan(sinceTimestamp)
|
|
},
|
|
order: { timestamp: 'ASC' }
|
|
});
|
|
const reactionsByMessageId = await loadMessageReactionsMap(dataSource, rows.map((row) => row.id));
|
|
|
|
return rows.map((row) => rowToMessage(row, reactionsByMessageId.get(row.id) ?? []));
|
|
}
|