import { DataSource } from 'typeorm'; import { MessageEntity } from '../../../entities'; import { replaceMessageReactions } from '../../relations'; import { UpdateMessageCommand } from '../../types'; export async function handleUpdateMessage(command: UpdateMessageCommand, dataSource: DataSource): Promise { const { messageId, updates } = command.payload; await dataSource.transaction(async (manager) => { const repo = manager.getRepository(MessageEntity); const existing = await repo.findOne({ where: { id: messageId } }); if (!existing) return; if (updates.channelId !== undefined) existing.channelId = updates.channelId ?? null; if (updates.senderId !== undefined) existing.senderId = updates.senderId; if (updates.senderName !== undefined) existing.senderName = updates.senderName; if (updates.content !== undefined) existing.content = updates.content; if (updates.timestamp !== undefined) existing.timestamp = updates.timestamp; if (updates.editedAt !== undefined) existing.editedAt = updates.editedAt ?? null; if (updates.isDeleted !== undefined) existing.isDeleted = updates.isDeleted ? 1 : 0; if (updates.replyToId !== undefined) existing.replyToId = updates.replyToId ?? null; await repo.save(existing); if (updates.reactions !== undefined) { await replaceMessageReactions(manager, messageId, updates.reactions ?? []); } }); }