wip: optimizations

This commit is contained in:
2026-05-23 15:28:40 +02:00
parent 5bf506af03
commit 155fe20862
89 changed files with 7431 additions and 392 deletions

View File

@@ -0,0 +1,27 @@
import { DataSource } from 'typeorm';
import { MessageEntity } from '../../../entities';
import { GetRoomMessageStatsQuery } from '../../types';
import { getCurrentUserScope } from '../../current-user-scope';
export async function handleGetRoomMessageStats(query: GetRoomMessageStatsQuery, dataSource: DataSource) {
const repo = dataSource.getRepository(MessageEntity);
const { roomId } = query.payload;
const currentUserId = await getCurrentUserScope(dataSource);
if (!currentUserId) {
return { count: 0,
lastUpdated: 0 };
}
const row = await repo.createQueryBuilder('message')
.select('COUNT(message.id)', 'count')
.addSelect('MAX(COALESCE(message.editedAt, message.timestamp, 0))', 'lastUpdated')
.where('message.roomId = :roomId', { roomId })
.andWhere('message.ownerUserId = :currentUserId', { currentUserId })
.getRawOne<{ count?: string | number | null; lastUpdated?: string | number | null }>();
return {
count: Number(row?.count ?? 0) || 0,
lastUpdated: Number(row?.lastUpdated ?? 0) || 0
};
}