import { DataSource } from 'typeorm'; import { RoomEntity } from '../../../entities'; import { UpdateRoomCommand } from '../../types'; import { applyUpdates, boolToInt, jsonOrNull, TransformMap } from './utils/applyUpdates'; const ROOM_TRANSFORMS: TransformMap = { isPrivate: boolToInt, userCount: (val) => (val ?? 0), permissions: jsonOrNull, channels: jsonOrNull }; export async function handleUpdateRoom(command: UpdateRoomCommand, dataSource: DataSource): Promise { const repo = dataSource.getRepository(RoomEntity); const { roomId, updates } = command.payload; const existing = await repo.findOne({ where: { id: roomId } }); if (!existing) return; applyUpdates(existing, updates, ROOM_TRANSFORMS); await repo.save(existing); }