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) ?? [])); }