import { DataSource } from 'typeorm'; import { MessageEntity } from '../../../entities'; import { UpdateMessageCommand } from '../../types'; export async function handleUpdateMessage(command: UpdateMessageCommand, dataSource: DataSource): Promise { const repo = dataSource.getRepository(MessageEntity); const { messageId, updates } = command.payload; 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.reactions !== undefined) existing.reactions = JSON.stringify(updates.reactions ?? []); if (updates.isDeleted !== undefined) existing.isDeleted = updates.isDeleted ? 1 : 0; if (updates.replyToId !== undefined) existing.replyToId = updates.replyToId ?? null; await repo.save(existing); }